{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Action1_LSTM_PM2.5数据集     \n",
    "https://archive.ics.uci.edu/ml/datasets/Beijing%20PM2.5%20Data     预测未来北京PM2.5的值\n",
    "\n",
    "1、使用时间序列工具（ARMA或者LTSM）（40points）     2、结果正确（20points）     3、代码进行注释，写明解决方案思路（20points)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 将原始数据格式中的year, month, day, hour进行合并，并保存新的文件pollution.csv\n",
    "from pandas import read_csv\n",
    "from datetime import datetime\n",
    "# 数据加载\n",
    "def parse(x):\n",
    "    return datetime.strptime(x, '%Y %m %d %H')\n",
    "dataset = read_csv('./raw.csv',  parse_dates = [['year', 'month', 'day', 'hour']], index_col=0, date_parser=parse)\n",
    "dataset.drop('No', axis=1, inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>pm2.5</th>\n",
       "      <th>DEWP</th>\n",
       "      <th>TEMP</th>\n",
       "      <th>PRES</th>\n",
       "      <th>cbwd</th>\n",
       "      <th>Iws</th>\n",
       "      <th>Is</th>\n",
       "      <th>Ir</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>year_month_day_hour</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2010-01-01 00:00:00</th>\n",
       "      <td>NaN</td>\n",
       "      <td>-21</td>\n",
       "      <td>-11.0</td>\n",
       "      <td>1021.0</td>\n",
       "      <td>NW</td>\n",
       "      <td>1.79</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2010-01-01 01:00:00</th>\n",
       "      <td>NaN</td>\n",
       "      <td>-21</td>\n",
       "      <td>-12.0</td>\n",
       "      <td>1020.0</td>\n",
       "      <td>NW</td>\n",
       "      <td>4.92</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2010-01-01 02:00:00</th>\n",
       "      <td>NaN</td>\n",
       "      <td>-21</td>\n",
       "      <td>-11.0</td>\n",
       "      <td>1019.0</td>\n",
       "      <td>NW</td>\n",
       "      <td>6.71</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2010-01-01 03:00:00</th>\n",
       "      <td>NaN</td>\n",
       "      <td>-21</td>\n",
       "      <td>-14.0</td>\n",
       "      <td>1019.0</td>\n",
       "      <td>NW</td>\n",
       "      <td>9.84</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2010-01-01 04:00:00</th>\n",
       "      <td>NaN</td>\n",
       "      <td>-20</td>\n",
       "      <td>-12.0</td>\n",
       "      <td>1018.0</td>\n",
       "      <td>NW</td>\n",
       "      <td>12.97</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                     pm2.5  DEWP  TEMP    PRES cbwd    Iws  Is  Ir\n",
       "year_month_day_hour                                               \n",
       "2010-01-01 00:00:00    NaN   -21 -11.0  1021.0   NW   1.79   0   0\n",
       "2010-01-01 01:00:00    NaN   -21 -12.0  1020.0   NW   4.92   0   0\n",
       "2010-01-01 02:00:00    NaN   -21 -11.0  1019.0   NW   6.71   0   0\n",
       "2010-01-01 03:00:00    NaN   -21 -14.0  1019.0   NW   9.84   0   0\n",
       "2010-01-01 04:00:00    NaN   -20 -12.0  1018.0   NW  12.97   0   0"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dataset.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 列名替换\n",
    "dataset.columns = ['pollution', 'dew', 'temp', 'press', 'wnd_dir', 'wnd_spd', 'snow', 'rain']\n",
    "dataset.index.name = 'date'\n",
    "# 缺失值填充\n",
    "dataset['pollution'].fillna(0, inplace=True)\n",
    "# 去掉第一天数据（前24小时）\n",
    "dataset = dataset[24:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>pollution</th>\n",
       "      <th>dew</th>\n",
       "      <th>temp</th>\n",
       "      <th>press</th>\n",
       "      <th>wnd_dir</th>\n",
       "      <th>wnd_spd</th>\n",
       "      <th>snow</th>\n",
       "      <th>rain</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>date</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2010-01-02 00:00:00</th>\n",
       "      <td>129.0</td>\n",
       "      <td>-16</td>\n",
       "      <td>-4.0</td>\n",
       "      <td>1020.0</td>\n",
       "      <td>SE</td>\n",
       "      <td>1.79</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2010-01-02 01:00:00</th>\n",
       "      <td>148.0</td>\n",
       "      <td>-15</td>\n",
       "      <td>-4.0</td>\n",
       "      <td>1020.0</td>\n",
       "      <td>SE</td>\n",
       "      <td>2.68</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2010-01-02 02:00:00</th>\n",
       "      <td>159.0</td>\n",
       "      <td>-11</td>\n",
       "      <td>-5.0</td>\n",
       "      <td>1021.0</td>\n",
       "      <td>SE</td>\n",
       "      <td>3.57</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2010-01-02 03:00:00</th>\n",
       "      <td>181.0</td>\n",
       "      <td>-7</td>\n",
       "      <td>-5.0</td>\n",
       "      <td>1022.0</td>\n",
       "      <td>SE</td>\n",
       "      <td>5.36</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2010-01-02 04:00:00</th>\n",
       "      <td>138.0</td>\n",
       "      <td>-7</td>\n",
       "      <td>-5.0</td>\n",
       "      <td>1022.0</td>\n",
       "      <td>SE</td>\n",
       "      <td>6.25</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                     pollution  dew  temp   press wnd_dir  wnd_spd  snow  rain\n",
       "date                                                                          \n",
       "2010-01-02 00:00:00      129.0  -16  -4.0  1020.0      SE     1.79     0     0\n",
       "2010-01-02 01:00:00      148.0  -15  -4.0  1020.0      SE     2.68     0     0\n",
       "2010-01-02 02:00:00      159.0  -11  -5.0  1021.0      SE     3.57     0     0\n",
       "2010-01-02 03:00:00      181.0   -7  -5.0  1022.0      SE     5.36     1     0\n",
       "2010-01-02 04:00:00      138.0   -7  -5.0  1022.0      SE     6.25     2     0"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dataset.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 数据保存\n",
    "dataset.to_csv('pollution.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 使用LSTM对PM2.5进行预测，根据8个特征维度预测PM指数 pollution\n",
    "import pandas as pd\n",
    "from pandas import read_csv, DataFrame, concat\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.preprocessing import MinMaxScaler, LabelEncoder\n",
    "from sklearn.metrics import mean_squared_error\n",
    "from keras.models import Sequential\n",
    "from keras.layers import Dense\n",
    "from keras.layers import LSTM\n",
    "from itertools import chain"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "\"\"\"\n",
    "将时间序列数据转换为适用于监督学习的数据\n",
    "给定输入、输出序列的长度\n",
    "data: 观察序列\n",
    "n_in: 观测数据input(X)的步长，范围[1, len(data)], 默认为1\n",
    "n_out: 观测数据output(y)的步长， 范围为[0, len(data)-1], 默认为1\n",
    "dropnan: 是否删除NaN行\n",
    "返回值：适用于监督学习的 DataFrame\n",
    "\"\"\"\n",
    "# 将时间序列数据转换为适用于监督学习的数据\n",
    "def series_to_supervised(data, n_in=1, n_out=1, dropnan=True):\n",
    "    n_vars = 1 if type(data) is list else data.shape[1]\n",
    "    df = DataFrame(data)\n",
    "    cols, names = list(), list()\n",
    "    for i in range(n_in, 0, -1):\n",
    "        cols.append(df.shift(i)) # shift错位取值\n",
    "        names += [('var%d(t-%d)' % (j + 1, i)) for j in range(n_vars)]\n",
    "    # 预测序列 (t, t+1, ... t+n)\n",
    "    for i in range(0, n_out):\n",
    "        cols.append(df.shift(-i))\n",
    "        if i == 0:\n",
    "            names += [('var%d(t)' % (j + 1)) for j in range(n_vars)]\n",
    "        else:\n",
    "            names += [('var%d(t+%d)' % (j + 1, i)) for j in range(n_vars)]\n",
    "    agg = concat(cols, axis=1)\n",
    "    agg.columns = names\n",
    "    # 去掉NaN行\n",
    "    if dropnan:\n",
    "        agg.dropna(inplace=True)\n",
    "    return agg"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[129.0 -16 -4.0 ... 1.79 0 0]\n",
      " [148.0 -15 -4.0 ... 2.68 0 0]\n",
      " [159.0 -11 -5.0 ... 3.57 0 0]\n",
      " ...\n",
      " [10.0 -22 -3.0 ... 242.7 0 0]\n",
      " [8.0 -22 -4.0 ... 246.72 0 0]\n",
      " [12.0 -21 -3.0 ... 249.85 0 0]]\n",
      "(43800, 8)\n"
     ]
    }
   ],
   "source": [
    "# 数据加载\n",
    "dataset = read_csv('pollution.csv', header=0, index_col=0)\n",
    "values = dataset.values\n",
    "print(values)\n",
    "print(values.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX0AAAD9CAYAAABQvqc9AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAACMzElEQVR4nO2dd3gVRdfAf3PTO4RACBASeu9IkY5I1Re7Yu/6Wl87KCqKCp+9d1GxYFdEuvQOCS2QAAkhPaT3dtt8f9ySe5N7U+9NY3/Pkye7szuzs3N3z86cOXOOkFKioKCgoHBhoGruCigoKCgoNB2K0FdQUFC4gFCEvoKCgsIFhCL0FRQUFC4gFKGvoKCgcAGhCH0FBQWFCwhF6CsoKCg0AiGEFEL0Nm5/I4R4pRFlnRRCTHVU3Wzh6szCFRQUFBRsI4T4BkiRUi42pUkpBzn7unXq6QshVgghMoUQJyzSAoUQm4UQscb/7Y3pQgjxvhAiTghxXAgx0iLPbcbzY4UQtzn+dhQUFBQUaqKu6p1vgNlV0hYCW6SUfYAtxn2AOUAf49+9wCdg+EgALwJjgTHAi6YPhYKCgkJzI4RIEEIsEkJECyHyhBBfCyE8jcfuMXZkc4UQfwshutShvNuFELurpEkhRG8hxL3ATcDTQohiIcQaizrMMG57CCHeFUKkGf/eFUJ4GI9NFUKkCCGeMHbI04UQd9TpPuvqhkEIEQ78I6UcbNw/DUyVUqYLIUKA7VLKfkKIz4zbqyzPM/1JKe8zpludZ4+goCAZHh5epzoqXNhodRI9EncXZapKof5ERUWhUqno06cPKpWKuLg4/Pz88PPzIz4+nr59++Lp6UlKSgplZWX069cPgMjISAYNGoSnpycJCQm4ubnRtWtXsrOzyc7Opn///uZr2DvXsg5hYWH4+/uTlpZGYWEhvXr1AuDs2bP4+fnRtWtXioqKOHPmDCEhIYSEhFBYWMjZs2cZOnQorq6uREZGZkspO9q8USllnf6AcOCExX6+xbYw7QP/ABMtjm0BRgNPAost0p8HnrRzrXuBCCCie/fu0tFMf3ObvOrjPQ4vV6F5CXvmHxn2zD/NXQ2FVkpYWJj85JNPzPtr166VPXv2lHfeead86qmnzOlFRUXS1dVVnjt3TkopJSBjY2OllFLedttt8rnnnpNSSvn111/LCRMmWF3D3rmWddi8ebOUUsqePXvKtWvXmo9t2LBBhoWFSSml3LZtm/T09JQajcZ8vGPHjnLfvn2m60RIO7LcIV0i0804oixjeZ9LKUdLKUd37Gj7Y9UYzmaVEJmY5/ByFRQUWjehoaHm7bCwMNLS0khLSyMsLMyc7uvrS4cOHUhNTXVqXape11QfEx06dMDVtdIWx9vbm+Li4lrLbYzQzzCqdTD+zzSmpwKhFud1M6bZS1dQUKgna4+nE75wLecLypu7Km2K5ORk83ZSUhJdunShS5cuJCYmmtNLSkrIycmxUsvYwsfHh9LSUvP++fPnrY4LIWrMX/W6pvo0lsYI/b8BkwXObcBqi/RbjVY844ACKWU6sBGYKYRob5zAnWlMU1BQqCcP/ngYgC2nMpq5Jm2Ljz76iJSUFHJzc3n11Ve5/vrrWbBgAV9//TVHjx6loqKCZ599lrFjx1LbXOOwYcM4efIkR48epby8nCVLllgdDw4OJj4+3m7+BQsW8Morr5CVlUV2djYvv/wyN998c6Pvsa4mm6uAfUA/44zxXcBy4FIhRCwww7gPsA6IB+KAL4AHAKSUucBS4JDx72VjWovh1bXRPPnrseauhoJCnUnKKa39JIU6c+ONNzJz5kx69uxJr169WLx4MTNmzGDp0qVcffXVhISEcPbsWX766aday+rbty8vvPACM2bMoE+fPkycONHq+F133UV0dDTt2rXjiiuuqJZ/8eLFjB49mqFDhzJkyBBGjhzJ4sWLq51XX+psvdNcjB49WkZERDi0zPCFawFIWD6vTukKrYML6fcz3evtF4ez5D9OX89zQRAeHs6XX37JjBkzmrsqjUYIESmlHG3rmGLbZiSvRN3cVVBQqDdqnb65q9Ck7DiTRXKuMrppDIrQN5JR1HonxBKySygs1zR3NRSaAbX2whL6t604yNQ3t1ulhS9cy9J/opunQq0QRei3Iso1OqJSCqqlT31zO1d+tKfW/Ev/iebhVUecUbVGk1Nc0dxVaJX8FplywfV8dfrqKumvdp/jq93nKCiz3fn580gKCdklNZabkJDQJlQ7taEI/RbGidQC1hxLs3nswR8Oc/mHu4nLrLTFNfXwz2bV/ECD4cWwV3ZzsuNMFqNe+ZdtpzNrPC8us9imGm7DifMs+iPKWdVr8WyOzuB4Sj5anR61Vo9eL1m2LoaIhFzOF5SzPiqdb/aca+5qOp2l/0Qz7KVNNo899vMxLv9gt81jzUm5RseJ1OodOWdyQXjZ/PNICqPDAgkN9G7uqtTKZcYH8/Jhlfa4eSVq9p7NYcspg1AsKKsUfP/76WiT1s8ZHEkyLJQ7kpjHtH6dbJ5TVK5hxts78HJzIWaptRuo+7+PdHodWzIvG1UbvTv5EpdZzCc3jeSznfF8ttPaHPD2CT0afA2dXlKu0eHj4XyRkVuiJiq1gCl97S/M1Or05Jao6eTvWWNZZWodXu4uABRVaB1az/qSWVSOq0pFoI+7Oe3p347z97E0IhbPIMjXo0nq0eZ7+nq95LGfjzHv/V01ntdcRkznC8rp9ey6al/7JX+frNxec9Jslw1w9Sf72HDCsNAjMaf2Hn5VPtgSi5TS5jC5Pny3P5HwhWsp1+gaVY7KuEhFAvvjcxj72r9c9+k+q3NW7jMsUimzuNbm6AziMosade3m4nxBOQt/P25XJ//t3gQW/1W/0YtpBFiibtzvYYunfj3GoBebZlnNyKWbuW3FQUoqtNzy1QHuWVndeu/Fv08y5rUtFNUwl7UuKp0BL2xgey0jSGfy1e5zhC9ci0anZ8yrWxi5dLPVcZNngDKL36xMreOF1ScodtJHqs0L/e8PGIRFYXnDGvDnQ0l29YSOYNvpTHR6yff7E63Sv9mbYN4+nFTdZYSpd5tey4rMonINybml/G2h1vnzSCqf7oin17PrGjUB/MGWWACr9pFS8s2ec5TU8YHdHJ3B0eR8AFLzyrjh8/1kFFZwMMGwhCMus5idZ7J4Y+PpannvWRnBjLd32i07Oq2QUnX1ekx+fRsvrTlpI0fTsfivE/x0KJkdZ7KqHZNS8uLfJ/l+fxIaC+ucI0l56PSS1UdrXshu2WFwFH8cadzi+VK1lus+3cfp84aP9InUAsIXruX/Npwyn7PqYJJV56egTMOu2Gw2R1dfgPZvjCGtpML+B+7RnwzzV7d/fahRdW8MpgnmPs+tr3Zs+lvbSc0vA+BkWgHf7DmHXi/5dl8CK/cl8sn2OKfUqc0LfUvheep8odWx8IVrbb4g4QvXotbqiU4r5Jnfo3jmt+ONrsfZrGL6P7+eNcfSzD80gNbY23ZR2V+SrbdjoKHTS0pr6dUNWbKJSa9v4xGLCdwxPQL5NdKw3Dyz0PDRaMhkoGmgYLma/OPtZ1myJpo7bLxox5LzrXweZRaVc8/KCLYa1Va2BMuMt3dw64qD1dK1tZgqlqq1zH1/F4+sOkJJhZYXVp+gQqvj8Z+PkpRbytd7Eupwh9U5lpzPuVomBOuCzvijni8oI3zhWrPdPUCixYKro8n5SCm57rN9XPnxXj7dcZZHa1HpOauH2BgOJeRxMCGXWe8aPtK3fHUAgE+2n+WY8aO/6I8os3oT4OA5+2s3MwoNE//6GoboGp31Mdca3rHmIN5iHu7+7w+zZE00606kk2F8Jz/adtYp123TQl+j01s17Ox3q6t4vtmbwN/H0pjznvWxMrWO9AKDcE4vLEenl/wakWzudZt6KvaEZVRKAYNe2EBCdgnhC9dyyVs7KNfoeXjVESYs34qUkiNJeWw6aVDT6PRmD6NmStVaytQ6tHak/tjXtljtJ+eWkmbxQbHH1H6dzO6H1VrJxpPnmfT6Nlbsrt9kX7bR4kark+SXqvloW5y5R34wIZesImuLnPkf7eHqT/YSm2Ho7dUmeH85lGwzPXzhWr6rMjKyREpJWr7hxYlMzGPQixtZuS+R/1t/2urDYqmWikkvNAvf8IVrufObQ3y646yVVZGUkvkf7WFaFZPBZ347Tp/n1tmsyyfbz3I8Jd8qTa3Vs+20oYf//OrKTkd8lkE9czqjUmV17af7mPh/28wCcF1Uut37ri96vUSj0/PRtjjCF66lQut4tRAYRpu3WXy4398SS15p5ejwmd+P8+eRlGr5/vfzUat9Wx8zWyrKm788wK7YyhHU1H6GuQFtA9SZ3+5NsPscNgZ7I+GHfjxCal7t73BjaNMTubaGVJNf31Yt7REbZoxavZ67vjXoElUC7vsugn9jDD3Sfx+fzMtrDMO2racyuWlsd+KzS/jneDrvb4ll82OTue+7CErUumo2xSb+PpZm1WP76VAya6u80MNf2oy7qwpPNxebZWRXMXOcZLy3h6b15qHpve3mc1UJThmH2Wqd3iyUXv4nmp4dfbj960PcO7knxRVaXrx8IJEJedz45QFW3D6awjItAV5uVi/Qxcu32rzOmYwiPN1U+Hm6WaVf+s5OEpbP45PtNfdknv7d/ghr48nzdo+t3JfIi8YRnKVwWVHFguXxX47y8U2j0Oj01T76W09lsvVUJgfic5g/vCtf7T7HitsvMh8vVWvRaCUebip+jrAvFEzqi4Tl8wwf+uR8/jlmW3An5ZbSs6Mv931nPTFtOTI8mVZYNVud+eVQMu/8e4aVd46hT7Afd357iO2nK4Vjv8Ub+OLW0eSWVNAjyJeQAE9CA72t5h1OpBYwuGtAva47ZIm1Rc3bm89Y7Z86X8RjP9fs/sRyJGSJLX3/7rhsdsdlm/dPpFa22b0rI/j81sqFqn0Xr0et1fPpzSOZPTikWlmm52j+iC54uLqg0en5fGc8d07oYZ4gropWp0erl3bfv/CFawkN9LJ5DGCTDXWWI2mzbhgqtDr6Ld7gkDq093azEh6WCOH8SeCGXGPBmO48PL23TYH8xa2jzS/LXw9OYMOJ83y6wzlDScBscWP54nZt52UlzJoDXw9XDj03g3kf7LIaEVoyOqw9EUaVlIeriooqE6+Wz4al+4dnfjvO/BFduPELgxoj9tU5/HggySxE7PH4pX2rCUVnkLB8nl1Baomfh2s1q5f3F4zgP8O6mEemJWody9fHsGjOALN1z9Q3tpGQU8rVI7vx++HqvfjmZMGYUFYdTObcsrn0WFQ5QjP9fpd/sJuo1AJev2YoT1uodt1dVDwwrRfv/htLjyAfvrxtNKsOJPHcvAGsP3GenBI1vYJ8+HBbHHvP5hDg5dbo+cCGuhSpyQ1DmxX6dXmgL1TevHaY2bHcC5cNNJv8OZPXrx5aY8+9LZCwfB4VWh3nsktsqhJbEvGvzaXns7ZVUo1h1qBgXr9mmF17+ZbMW9cO4+pR3VqU7GgTQl8IMRt4D3ABvpRSLq/pfEXoKygoXKg4Q+g36USuEMIF+AhD8PSBwAIhxMCmrIOCgoLChUxTW++MAeKklPFSSjXwEzC/ieugoKCg0CpwhkO9phb6XQFLU4cUY5oVQoh7hRARQoiIrKzqi1fqwl0TG77k3FEsGNOd0WHtm7saTuOpWf2auwoKCm0aZywtaFKdvhDiGmC2lPJu4/4twFgp5UM15MkC7Btl10wQkF3rWRcWSpvYRmmX6ihtYpvW0C5hUkqbzoua2k6/3sHR7VW8LgghIuxNZlyoKG1iG6VdqqO0iW2c1S5CiG+AFCll42Mi1kBTq3cOAX2EED2EEO7ADRgCqSsoKCgoNAFOEfpCiFAhxDYhRLQQ4qQQ4lHjocWAPxADFAFHpZTN6/lKQUFB4QLCWT19LfCElHIgMA540MI0c7mU0lNK6SGlvM1J1zfxuZPLb40obWIbpV2qo7SJbRzSLkKIEUKIw0KIIiHEz4CnxbHLhBBHhRD5Qoi9QoihxvQ7hBBrLM6LFUL8arGfLIQYXuN1m2IiVwixGvgQmAAUSynfrGveoKAgGR4e7qyqNQnxWSV08vfAtwkCUDQ3egmnzxfStZ0XPh6uNXoPbWtUaPW4uQh0enBzuXDuW6H+6PV6Tp48SadOnejUqRP5+fnEx8fTuXNn2rdvT2xsLL1798bb25vc3FzS0tIYNGgQGo2GmJgYhg0bhkaj4fTp00gpGTp0KBUVFeZjhw8fzrY3H+p0oS+ECAd2AoOBx4HbgUIgAsNooLqzeAsauiK3udHppZWTNoD7p/Qiu7iCxy7tS9d29h0utTZ2nMkiyNcdf0837vr2EGcyiqudk7B8Hj8eSCIkwJNp/W1Hx2pN/B6ZwhNGVxa3Xxxu5cIb4Pf/jkdKg4Oy7h28md4/uBlq6VgiE/P45VAyo8PbM65nB7q190Krl1aODfcvuoTOATVHs2pNpBeUsfNMFteMCuW6z/bx/oIRPPHLUYL9PXnvhhENLnfnzp3ccMMNpKamIoy+yS+++GKmT59OTk4OQUFBLF261Hx+v379+Pzzz5kyZQqhoaGsXr2aM2fOsHXrVo4ePcrKlSvZt28ff/75J3///XfzuWEQQvgCO4BXpZR/CCGCMZg6SWApECKlvNNGvnuBewG6d+8+KjGxoRabTcOu2Cze3Hiat68fziVv7ahTnp5BPsRnl/DgtF6M69mBod3aEeDlVnvGFoBeL0nNLzN79awv/zw8kYEh/qhaySggs7Cc9IJyhnQN4KU1J/l2X/2fx2/uuIgxPQLxdm9doz0pDTEb6hM167NbRjFrUGcn1sq5xGcVk1VUQUGZhnu/sx+Kc+0jE5n3vnXc3Q3/m0T/zv61XuOnn37irbfe4tChyrgTCxYsoFevXhw+fJjt27fj7l4ZVlGtVvPVV1+xYMECbr75ZkaOHElcXBwTJkzg2LFj9OrVi3379jFkyBCeeOKJ5hH6Qgg34B9go5TybRvHw4F/pJSDayqnpfT0s4sr2Hkmi6tGdgMM4e5WH02le6A3//3hcC2568bZ1+ZSXKFtccJfrdWzNioNb3dXNp48zx+HGxdFycSnN4+kX2d/wjt4m3s7LQWtTk/v59Zz3+Se1WLNNoaJvYO4YUwolw3tUvvJzUBOcQX/+/kou2Ida4Z+8qVZTRJft75IKXnqt+PEpBeSll9GfpnGYV5zH5nem8dn2l7AuGPHDhYsWGDV058wYQLTpk0jKyuL7t2789xzz9nM+8UXX7BmzRrOnTvH+vXrOXbsGD/88AP79u3j119/ZfTo0U0v9IXhLr4FcqWU/7NID5FSphu3H8OwMOuGmspqKULf5MDtk5tG8sHWOKLTG+7X3B4TeweZ/YC/csVgbh4X5vBr1JdyjY7/fLjbpsrGHj/eM9bsUrguTO/fia2nMlk0pz/3TenVkGo2mtc3nOLj7WfpF+xnFcTEWdwxIZwgXw/+O6VXs4941hxL4+FVR3j7umE8/kvNfu0bQ//Ofvx6//hq8RWamsJyDX8eTuXmcWG8sja6wVHU6sOWJ6YggA6+HgR4uaFWq+nduzdPPPEEDzzwAGvWrOH666/nmWee4YorruDKK6/kt99+Y8yYMZSWlrJ9+3YmT56Mn58fZ86cYdSoUQQHBxMXF0dhYSHh4eFotVry8vJwcXFpFqE/EdgFRAEm5xHPAguA4RjUOwnAfaaPgD1amtCvDyYPeY31+NlQT3uNYdPJ8zUObe1R9Z5NPsvbebuRbycmgS0Ghviz7tFJ9b5+fflsx1mWrT9V+4m14Ofpyr5Fl+Dr4Vqv33tYaDuentWPm748wOlXZuPhajvwhjNpao+0K+8cw+S+DV5z2WD+PJJSa7CWpsD0jkRERHDPPfcQFxfH3LlzAejTpw+vvPIKGzZs4Pnnnyc2NhYvLy8mTpzIihUr8PPzAyAkJITZs2fz9ddfAzB69Gg6duzI+vWG+ZUL0rVyQ9HrJbvjspnUJwgpoeez67hmVDd+i6x/IAjTj/vSmpNWvQlTcIZxPQPZH28/DqhlOVLKJlGBHIjP4Y/DqTVGg6qJmj5Qqw4mseiPqDqXFd7Bm6/vGINKQFgHnwbVp9ZrNEDgTe3Xkb1nc1Br9ZxaOpvCcg2d/ConL+/+NsIcuLu+bHliCr06+jYob33ZcSaLl/4+SXwdY/4unjeAkAAvNDq9OZThG9cMZUrfjuyKzTZPbNeFH+4ey9gegbi6OG99aEmFlkEvbqRXRx/aebtbxWeujSBfj2qR6QBuHR/GnMEhLPhif4Pr1cnPg4PPzWhw/rrQYoS+0bXyGeBSDM7WDgELpJR2o3g0tdC/bcVBdpwxOHmz98Pb4r0bhvPoT0eZPagzG4yh/CwFoKVw2fTYZPoG+1Gu0dH/+Q21Cv+7J/bgy93niHl5tt0QbY0ls7Cc274+REw91Fb/d/UQrr+oOwAvrj7BjIHBTOpTcw9u0R9RrDqYVO/6OWq0czQ5H51ez6iwQKBhQv/As5eY511qConXUHY8NdVhHzmtTs+p80Vo9ZKsogq+2BXPwXO5RC6ewahX/q01/5LLB7JkTTRBvh5ELK4UVMvXnyKsgzcLxhh+/1K1loEv1H2y15LjS2bi7wSVT2N+g4Tl83htXQzhHXwY0jWApWuj+fneceaO168RyfwWmcL3d4+1GZa1LuU7k5Yk9McDS6SUs4z7iwCklMvs5XGm0L//u0jmD+/CnCEhZBaVM+bVLbVnqsKehdPN5pd6vSQqtYD5H+3Bw1XF6VfmmM/T6yV9Fq9Hp5dWwluvl6h1evo/X3tox3sm9eCLXec4/PylBPq413q+PYortOj00iy4tp/O5PavD9WSy5qTL83C292l3qOP19bF8HkDJkb3LpyOm4uKvFI1fYP96p3/SFIeQ7u1o5cxWtTosPasundcvV/YqsLPHkv+Psk3exOYNSiYjSfr3+t/bu4AbhkfZv6opBeU0dnfs87tfTarmMScElYdTGZzI2Kunls2l//bcJqrRnattd2j0wo5l13Cgz/W37DBEUJww4l0BoYE0L2DN9Awob/ukUn4e7nSrb13nfOYrmM5H/TI9N68vzXObp5bx4fx7NwBPPTjEf6NyeDZuf25d7Lj5rNqEvpNPZ1uy7XyWGdfdMeZLAaG+NPRz8OcJqVkw8nzbDh5nm1PTuXmL+s+8WjCz9PVyt5epRIMC23H6gcnMKiLtdmWSiXQGYOJe7iqrNLd6rgw+otdhsDeI5duBuDYizPrZemTV6Jmy6lMc6jEZ+f25+6JPXlvS2ydyzDRUEuMRy/pg6tK8HEtQdGrUjXWb/TLs+pk/lhQquHXyGReWRtj1e4RiXkN6qFN6hNUp/PG9Ajkm70JXDMqlKHd2pGUU1ovldmr62L4LTKFjY9N5mxWMZe8tYNu7b3Y/cz0audqdXpeW3eKG8d2J69UzdO/HedcHVU2tSGEYOGc/nU6d2AXfwZ28efhVdC/s3+9jB3CF67l3LK5CCHIKCxnzbE07prYw+5HTqPT887mM9w8Lowu7bzIL1Vz//eHae/txpEXZtb5urbuob7senoanm4udPTzMH8AZg3uXKPQX7kvkZUWpr+vrTvlUKFfEy3PhopqdvqNKkur03PbioOAoTdx3Wf7iEop4ImZfc3nTHtze4PKvndST5vpw0Lb2Ux/74bhrNiTUM1ao6GrVqPTChnfqwORibmEd/Chg6+HzfMW/XGcVQerC5zX1p3itXX1m8S8dGAw+87mNKi+YPhYPD27f72FflX2nc3hkgHBaHV6vt+fyPnCCraeymDTY1Oszhv2cmWs1qpBzevKnRN64OGm4pPtZ3l6dt1iCMwdEsLWJ6bQs6Mvlw40LMxaNLc/8dklXPXx3jqVcTqjiI+3x/G9UTik5JWRX6qmnbc7Ukqu+mQvR5Lyzeev2HOufjfmJOKXGXrtE/9vKyl5ZXXO99/vDzOpbxAfbY0jraCcWYM6Expo6HF/tC2OHWeyuGlsd/w8XSko0/Dx9rMk5pTy0U0jGf6yoSOUV6pp8olpUx0B8/zfgM7+9A32ZVKfjny1u26/S/jCtRx94VLaeTd8FF8X2qx657v9ifh6uDCye3umvLEdMLy8jngx3r1+OGEdvBnWrZ3DzO02nDjP/d9H8sY1Q5k5qHO9A0sP6RrAmocnVktPLyhj/LKtNnI0DEfpIgvKNHi7u5h726Y5ERNPzerHGxtP281vmgy3lb7pZAavXjmYsa/VX10H8OGNI3joxyPm/SPPX0qAlxsFZRraN0KtBnAuu4Rpb27HzUWg0TXs3ZvaryPbTzcsuFB9+PDGEY1aT6DR6Smt0Fl9eOvDrqen4aISHE3O5wEHrYWxxVOz+jFncGe6B3o3emJZq9NTUqEjwLtyBN7Qj9BfD05guJ0OZG20JJ2+K4aJ3Esw+NE/BNxYk6fNxgZGf2Z2f/5vQ+NN8ixpChPKY8n5zP9oT73yxL46B7cqD21DH7hu7b2q9dLum9yTRXMHNKg8e0gp0eqlud5vbzpNmUbHc/MGNltw+4Tl8whfuJYx4YH8cv94x5adXcLUN7czIMSfZ+f255avDjq0fEfiqOd8/kd7iM8q5uvbL+KaT/fVOZ8t9xaO4Js7LjLPYV0xvAuvXTXEqSulGzuh3BBajE5fSqkVQjwEbMRgsrnC2a6VHSnwv79rLF3bN43PnGGh7fDzcKWoQlvnPKZe858PXMyI7o0L0/jfqb34cGsc6QXlDivTFkIIK+dklisYhcBhqyPri7M+7GEdvHn0kj5cM6qbWS3g7qJCrXN8LNSWwuoHJ5i3+wb71nmhn6MF/orbRzO0WzuCLNSg7zbCf05dGdsjkAPnajfNbiocbiQrhHhDCHFKCHFcCPGnEKKdMT1cCFEGvAaUApullK86+vrOZGKfIHoEOcde3BavXGnwUPHD3fWb677y472MeHlTo3oYlw4IZt+iS1h1zziCfD3o0wCLmcZyjdHlRVOwf9ElTXIdIQSPXdrXLPD3LpxO5PPOtdmuL3dN7OG0j97S+YPNc1i9OjbduwQwvX+wWeDPGBDM45f2rSWHY/j5vvEkLJ/HReEtI162w9U7QoiZwFZjr/7/AKSUz9TV105VGqvecQQnXpqFoOEWKw1FSklaQbmVhdCnO86y3AErSKsyOqw9EcbFKwefu8RqsVFzodXpKSjT1MmevD5cNjSE4ykFJOWWAgbdcWigN2VqHRq93ik247VRodVRUKbhmk/2mevVFMwe1JmHpvcmObeUV9bGkJpfxtd3XMS0fs71hLr2eDoXhbdnTAPnXRpCc6xst6Rco6Nco+Pj7WfNZsvPzu1fozGFM9Q7Du/pSyk3SSlNOon9GOLgtgreu2E443oGWqWN6xmIr4drsziLEkJUc8F8SSPcEi+/aghf3DqaPQunc+WIrlbHfrlvPA9O60Wvjj4tQuADuLqo6ODrwZlX5hD36hxOvjSLW8fb9kd032TbllQmZg6sdG389nXD+eeRiXx9+0UkLJ9n7nV7ubs0i8AH8HB1oZOfJ6vuHcfVI7txz6QeVsftWYR9eKNBPfHeDcPrdb2LwttzzahuvL9gBIO7BjBnSAh7Fk4n5uXZThf4APOGhtDJ35PnHDRH1De4aVYxNwZPNxfaebvzrMU9N5WZpiXOlmR3Aj9b7PcQQhzB4E9/sZRyl5OvXyP/GdaFv4+lAfD5LaOYOagz84d35WxWMd7uLmQUVjT5ELQ2enfyZVKfIBbNGUBSbgn3f1+7VcPehdPpUuXj8c71w3nn+uFc99k+JvYOQqUSPDWrP0/NqptNdlPibrSvd3VR8fL8weSXavj7WBq7np6GTi9xdREE+XrY9Yb55a2jmdqvI72Ncx7urircXVUt0q9/13ZevHXdMKByXQYYJvar8vL8QVw2tAuXDe3C9tOZ1Y6DYW5m1qDOuLuozDbohxJyGdotwKafH2et+LbHvKEhvLouhiBfd24bH85bm88wJjyQgwn104Gvf3SyeeGdiYen9+bqkd2Y+uZ2WpgTV/59fIrNoErvXD+MK0d0c6oRQ4OEvhDiX8CWw+znpJSrjec8hyFs4g/GY+lAdylljhBiFPCXEGKQlLLaCg5H2Ol/ddto7vo2gnE9A3n1yiFc8tYO7pgQzvzhXXln8xl2nMnirok9eOk/gziclMclAyp7gibfJyEBLS/QiRCC7+4y6PhNKw9NmIaC938Xyaiw9iwY252c4opqAt+SX+5zrHVKU/D+ghG8v6D2CbgOPu68PH8wM4y9/OYe3teXhOXz2HjyPPd9F8n/XT2ED7fFkZxbaVF16/hw87ZJV/3kzL5sPZWJj4crSbmlPD2rX7UFTheFW49mWwL5pRrWRhl8L1oK/E9vHsn93x+2mgx945qhPGVhrmv6XV+7cgjP/mnw7dStvRdPzOxnXhDZXAYB9ujdqfrI5Oxrc83zHf+d2osTqQVOubazvGzeDtwHXCKltKmgFEJsB56UUtaosG8pXjZbKueN1jXlGh3hTTjJ3JKJSMilc4AnXdt5tTg//Q0hJa/Uyi3A6xtOccv4sGqdkpS80lZ3z8UVWga/uJH/Tu3FzIHBXFll4Zppla7pPDAI+ayiCi569V/zPhjmwHosWmeVBnDLVwe4ZVwYM1toYJfwhWvp4ONO5POXOqzMJjXZNHrRfBqYYinwhRAdMfjX1wkhegJ9AMdFp7hAaUuh6RzF6BbYk20MVf3APD3btgquPv5iWgq+Hq6cfGkWXkYfQzdcFMrN48KITiuksFxj/oC5GnvAY3oYfltLlyomhBCceWUO+iodWdPIuKVyaunsJlU/OUOn/yHgAWw2/mD7pZT3A5OBl4UQGgw+9u+XUrYc41UFBYVmwdJIYvnVQwEY3DXA6hxPNxd+/+/4Wk2H3V2d56rZWdjz1OosHC70pZS97aT/Dvzu6OspKChcGJjcYZvo2dGHvp2afv1Ia6fJg6jUFyFEFtDQyOhBGAKxK1SitIltlHapjtImtmkN7RImpbQZ3KLFC/3GIISIsDeZcaGitIltlHapjtImtmnt7dL6FGAKCgoKrQQhRIIQokX52VCEvoKCgsIFRFsX+p83dwVaIEqb2EZpl+oobWKbOrWLEOI7oDuwRghRLIR4WggxTgixVwiRL4Q4JoSYanH+diHEK8bjxUKINUKIDkKIH4QQhUKIQ0YfZqbzpRDiESFEvBAi2+jsslaZ3uJ1+kFBQTI8PLy5q1EvUvLK6OTvgXsjAzIoKCg0DTklajRavcPXvURFRREWFoa/vz9qtZro6Gh69OiBv78/RUVFxMfHM2jQINzc3Dh9+jQajYY+ffrg6urKqVOnkFLSvXt3/Pz8SEhIQAiBSR5GRkbi6+tLr1690Ov1nDlzhs6dOxMUFERkZGS2vYlcpJQt+m/UqFGyNfHXkRQZ9sw/MuyZf5q7KgoORqfTy/VRaVKn0zd3VVoEmYXlcv/Z7OauhkOw9c4mZBfLqJR883+9vv6/e1hYmNy8ebOUUsrly5fLm2++2er4zJkz5TfffCOllHLKlCnylVdeMR97/PHH5ezZs837f//9txw2bJh5H5Dr168373/00Udy+vTppmMR0o5MbZExcls60WmFHEvJZ8GYSr9AKXmlFFdorUL+Acx6ZyenM4o4tXQ2J9MKufqTvTYjXLUWfjiQyHv/xtIn2Je7J/akQqtjQu8gtp/OomdHHwZ1MSyqOZacT7f2Xnbj9rY2MgvLefSno+yLz+GVKwab3eQ+NL0P5RodhxPzqNDpmdq3o5UbhP3xOQztFuDUyEyOJjm3lI+3x5l93y/9J4ZrRnVj7vsG/4hnXplDQk4JM9/ZCRhWyR48l8s3d1zE2awSpvTtaNO3TEvl1PlK91/nC8p5a9NpXrlysDnMqi0s3TycySjCy83FKlauLRITE/n1119Zs2aNOU2j0TBt2jTzfnBwpQ8wLy+vavvFxdYBaEJDQ83bYWFhpKWl1VgHcJKXTSFEKLASCAYk8LmU8j0hxBLgHsAU4PNZKeU626W0LP4+lsbAED96dfQ1P/xhgd5sO53JjjNZNqMBWXrK6//8BvN2n+fWc9XIrjw/byAjlhoCOp95ZU6LX024+mgqz/15AoDMogr2xFUPkG4vPOXzlw1kxoBOuLqoqrmLbkks+iOKP4+ksHfhJQT6uHPfdxHsjs2mRK0zn/PO5jPklKgBeHPTGZvlfHvnGMrUOu7/PhJo+c7eXlx9gm/3JZKwfB5P/HKMgwm5rDqYzNYnprBizzmr2NJ9F6+3ynvQ6AjNFIJwKYb7zS9Vk5Zfbvbu2VKZ/W6ls99xywz+/UNqeUbtecHc/uRUKx9Ylh2A0NBQbrnlFr744ovGVNeK5ORkBg0aBEBSUhJdutQe09hZ3Q8t8ISU8rAQwg+IFEJsNh57R0r5ppOu6xSklDyyyhAoO+7VOeb0G7880OAy/zicyh+HU837Px9K4hYLr4nNRfjCtTwwtZfZv0uZWseAFzbUkqsSe+Epl/4TzdJ/ogHoGeTD1ienNrqujuKbPecYGtqOkd3bs+pgEgAjl262e75J4NfEbSuqx76NSS8kLb/MyqNrc1NQquHzXWf5dp9h/WPPRWvRW0zzTX9rR4PKtRSKLeGD9+HWWGYN6mzlxmHZ+hg+22Hb/df7W2IbdJ1L3t7Bukcm0a+z4TrBwcHExxuucfPNN3PRRRexceNGZsyYgUajYf/+/fTu3Ztu3RoWduSNN95g7NixFBcX89577/H444/XmscpQl9KmY7BlTJSyiIhRAzQteZcLRetxVtg8snuaJasieaW8eGcLyjH3VVFoI+7U65TEyaPnR9vP8uTM/tx//eRbIrOcPh14rNL+GhbHG9sPA1UelJsDv6NzmDJGsPHyJnCqWrP8Pf/XsyosOYLnxeTXkj/zn4MX7rJyu2w3gl2HeEL1xKxeIZVbNqmIq9ETX6Zhjc3neHNTWe4e2IPvtx9rvaMDUSnl8x6dyeebioOP38pixYt4uGHH+bpp59m8eLFrF69mqeffpoFCxbg4uLCmDFj+OSTTxp8vfnz5zNq1CgKCgq4/fbbueuuu2rN43TrHaOJ0U5gMPA4cDuGICoRGEYDeTXlb27Xyjq95Lk/o/jpUHKTXtfSt7azqdDqyCqqYOL/bTOn/XLfeK77bF+TXN/Ed3eN4eJeQU1y36Nf2czMQZ358UCSOa05ArEnLJ/H/d9FopOSL25tmkWem6MzuGdlBPOGhrD2eHqTXNOS06/MthnAxdEciM/h+s/3O/06NRG1ZCZuLioGvLCBPx+YwHA7EdAaghCC2NhYeveu7u6sJtfKThX6QghfYAfwqpTyDyFEMAafFRKD6i9ESnmnjXyWQVRGJSY21PVOw/glIpmnfzvOL/eNZ09cNu81cKjXWM6+NpdyjY7IxDzUWr05GIijcWaUnvoyZ3BnPrl5lNOv05Lu2cS/j0+mtwMdiGl0elbsPscdE3rg7qoio7CcDj7u9H9+g9XotTn45+GJDO4aQGp+mcPneCx97bc0zi2by/GUAvqH+DX6w9dQoe80kwIhhBsGr5o/SCn/AJBSZlgc/wL4x1ZeKeXnGBdAjB49usmfzqeNUXkc0dOd0rcjD0/vzTWf1r+s/3y4m5NplZYFjlQ/nEwrYN77u9negnTrAOtPnOf9LbE8NK03qiYa6bQUfo1MYdEcx8SMBUPwkP3xuSTnlfL07P6MbcIg5LVx2Qe7zdvT+3dixe0XOazsPXEt1xeaKchLoI87hx0YNKU+OMt6RwBfATFSyrct0kOM+n6AK4ETzrh+XdDpJeUanZUv74IyDcNe2tSocrsEePLPI5MoKtcQ1qF6JKuv77iIO4xWDrVhKfDBoIZx1LB43vuGl27qm9sbXVa/YD9OZxTRPdCbnU9Pq3Z80R/HWXWw7uqxtzef4e3NlVYxV47oyjvXD290PQEKyzWNDkP32S2jUGv1jO/VAQ9XFRVaPUG+Hiz9J5oeQT4s/qthj/VnO+IJ8vHgnlqCvNeFl9dEsz/eYFXz/f4kIhPzG1Xe+kcnUa7R0b+zP3mlajZHZ3DbxeFIKdl48jwjw9qz/VQWT/9+vPbCqrD1VCbhC9cyOqw9c4aEIIAbx3ZvsJ/5z+3ESm4Iswd15tNbRpGSV0qwvyepeWV4u7tw64qDnDpf1OByc0vUnEgtIDq9kGtHdWvQnFZDtTTOCpc4EdgFRGEImALwLLAAGI5BvZMA3GfxEbCJs3T6//vpCH8dTSP+tbnmHmVDh/z7Fk0nJMCLs1nFhLb3tml6+VtkCn06+TIstB05xRXopCTQ271eE8NvXTuMJ349xp8PXEx0eiGJOaU8O3cAv0emMG9oiN2XpFyjw8NVxa7YbHoE+fDellh+i0xp0L0CPDajL7MGB9Mv2I8zGcX0Dfat9aHV6yUn0gq4bcVB8ko19b7mG9cMZVKfjo1aMbkrNotbvqpuVVNfahtxlWt03PD5fo7aCGZeF64c0ZWlVwy2GTi7rjhCfeXppqJco+eLW0dzaT1Ui45SnVm2c7lGV+tHILOonKNJ+dz7XaRDr22P+KxiOvh68POhJFYfTavWSasrC+f05/4pvcz7aq0eicRNpWrwaLfZdPqOwFFC33SfJuFkejBvHR/G4K4BZpVOXXHk8OzZP6OsJhTrwx0Twvl6TwJjwgP55f7qQc5/jUjmqd+O839XD+GZ36MaW1VW3TOO8b06NDi/Ti/p9WzDl2YsnjcAHw9Xq4VxNSGlpLhCy9ubz/D1noQGX/epWf0oLNPw1Kx+uNZhYZ2UklUHk5nWvyPjl21t0DU/vXkUswfXP65rXGYxM95umKklQNd2XiwYE8qD03oTlVrA0G7t6pXfJAxfXH0CNxcVvzawg7F34XS6tPPigy2xvLX5DGsemsiQbgHsj8/h72NpFJdruXV8mDk8ZmM/Nv88PBFfD1fae7sT4O1W7/yF5RqGLmmYpmDnU9Po3sGwuMt0H40Z4bYooW+Mofse4AJ8KaVcXtP5jhL6U97YRmJOqXmyrDEPyA93j2VUWHuHhTlLzS9jwvKGCQZLjjx/Ke0tTD3T8su42AHltvN2I9/YO3fUvEJjX9Da6lFUriEqpaBBaylOLZ1N/+c3MKiLP69fM5TQQG/8PesvBCzZHZvNzV8dYNfT05j0+rbaMxj5+KaRzB0SUqdzpZSsP3GeB3443NBqctfEHtw1sQddHDi52tDfevagzkzoE8TzFuqyw89farWGomeQD4/P7MtDPx5pcP0uGxrChzeObHB+S/JL1WyKzuA/w7pYLcisC8denMlPB5NYtr5yrUtD37cWI/SFEC7AGeBSIAU4BCyQUkbby+MIoR+bUcSlxiXjjWHnU9MoLNdUi9/ZWKSULP0nhhV7ztE32Nfm6t660DfYl02PTeHguVxGdG/H7rjsOs8f2MPUs0/OLUWt09Oro2OW1/98KIlDCXmNUjNV5frRoVx3UTc2R2fy6Y6z9cq7YEyoed7B2YuJPtl+ltiMIv44klr7ycCOp6aSXaxmUBd/q45GXonavKI7wMuNgrL6q83A0KN8aHpv3F1UtboSaAgmof/zveOa3YQS4IlL+/KWcc7ol/vGM7irv1PcZJSqtQx8YWOjymgLQn88sERKOcu4vwhASrnMXp7GCn21Vl9t2XhDcHMRxL46t9Hl1JU9cdnc1IgVv43hzCtzOHW+kA6+Hk53mfDlrnheWRvDjqem8uhPRxusB28MJjPRJX+f5LKhIWZ1gbOJSMitt1XXv49PITGnhLu+ddw8V1OumG1OU9n41+byb0wGMwYEN6llWGPuuS0I/WuA2VLKu437twBjpZQPVTnPYXb6jnjITr8yG1eVqskWS5lo6hekb7AvG/83uclXx2p0erMDOtM971s0vcG68Lqy4vbRrNidwCtXDLbyl9KUzH53J1eM6Mry9bbdVziTaf06snDOALPLgKbA9KFbdtUQFv3R+Dmmmti3aDqd/T2REvRS1mkuxhmotXr0UuLuouL/Np6y6/rBFheM0LekoT39xgrMvx+aQN9gP1xVotkelsSckho9/TmKxfMGcPO4sGa9VxN747IJ8HZjUJcAp370vr9rLBP7BDmt/PqSml/G0aR83tp8mvisEqdco7O/J3dP6kGgjztXjWyYrxdHI6U02647mpbg86cqUkqe+PWYld+tmmgLQr/J1DsNFRgxL88GwMvd+cvE60NafhkpeWUOc42gEhD98mz0UrZYt79SSn48mGT27OkoXvrPIG67ONyhZTqKco2OKz7a0ygbcEs8XFVsemwyfp5uzeLPqa6YJrodRVWjhpZGZGIeqfllDO7iX6NTO2cI/aZ+2w8BfYQQPYBU4AbgxiaugxWWaoRV94xrccLeRJd2XnRp58XOp6bx2roYhoW2s+vRsib+fOBiIhPzuGlsmMOsj5yFEIKbxobRL9iPf2MyOZFawO4GrrbsEeTDuWxDD/qmsXUz92wOPN1c2PC/yXy+8yyvrWucyueDBSOYNySkVaxsntgniITl88xxCoa/bO3ldFq/jmw7nWUnt4GN/5tMUbmGlLyyFi3wAUaFta/V4d6nTnJH0hwmm3OBdzGYbK6QUr5a0/nO7Ok/Mr03j8/sR0GpBomknXfLflCq8uOBJJ79s3a96AcLRvCw0TV0Sxzy1pf6juJW3jmGyX07UqHVkVuiJiSg5frzt6RCq6PfYoPZ35jwQA4m5NYp31Uju/KfYV2Y2q+TM6vnVHaeyeJWo3vqL24dzbiegQwx2sDPGNCJxy/tx7bTmWZPra05MNGp84W8ujaGXh192X46k/duGMGwRjpmazHqnYbgKKHfJcCTNKPr4D8euJgD8bncP6Vns7n0dRQJ2SVEpRbw8KojbHpsMu283Bhj4WPlxcsHcseEHhyIz6FHkA+d/B0bA7Q5+PtYGiEBnlwUHsgTvxzj98Mp3Dmhh1WgD4DPbxnFzEH1X9zUUrH1sfP3dKWwXMvKO8eYhWRb+LDb4qNtcXi7u3DHhB7mtH1nc5BScnHvljM/0xK44IV+Jz8PDj43A7VWz9msYgaEtOxIPo5Aq9Nz6nyRw9cUtGQueWs7Z7NKePPaYQT7ezCpj+240K0Vy2fax92Ffc9eYrVo7ERqAf07+zX7ZLxC83NBCv2zWcXMfncn39wxhot7dWj1PXoFheziCvJLNa0q/qxC89Cqhb4QIgtoqKF+EAb//QqVKG1iG6VdqqO0iW1aQ7uESSltDnVbvNBvDEKICHtfuwsVpU1so7RLdZQ2sU1rbxdF+aegoKDQjAghmtR0XhH6CgoKCk5ACJEghFgkhIgWQuQJIb4WQngKIaYKIVKEEM8IIc4DXwshVEKIhUKIs0KIHCHEL0KIQGM5nkKI743p+UKIQ8bQswghbhdCxAshioQQ54QQN9VWr7Yu9D9v7gq0QJQ2sY3SLtVR2sQ29WmXm4BZQC+gL7DYmN4ZCATCMPgZexi4ApgCdAHygI+M594GBAChQAfgfqBMCOEDvA/MkVL6ARcDR2urUIvX6QcFBcnw8PDmrkarJK9UjZuLqlERmBRaHtHphXT09aCjn0dzV0WhBqKioujcuTMdOxrmUwsKCkhKSiI8PJzY2FiGDx+OSmXod588eZLQ0FD8/Q3m5BqNhuPHjzNy5EhycnLIzs6me/fueHtXur7W6XRERUURFhZGQECAuSyAyMjIbHsTuUgpW/TfqFGjpLP560iKjM0ocvp16suhczlyxMubZH6JusbztDq9LK3QSimlLKnQyPVR6fJkaoEMe+YfGfbMP01R1SZBq9PLz3bEyfxStdTq9OZ0tVYny9Ra835phdbqeFtBp9PL3OIKu79raYVW6trgfbdWwsLC5D//VP5OJ06ckJ6ennLbtm2yS5cuVud6eXlJPz8/GRAQYP7z8PCQKSkpUq1WyyVLlsgBAwbIkJAQ+dRTT0m12iATNmzYIGfMmCEDAgLk3LlzZUxMjJRSSiBC2pGpbb4LmJxbyrnsEkIDvelhw32ulJJHfzrK4K7+/PPwpGaooX3e3xpHbomaw8l5TKthSf3Tvx3n98MpDguJ2BLZcOI8939viH362rpTXDe6G+eySxjfK4j3t8QCcM+kHswc1JlrP93H9aND+b9rhjZnlR1Kcm5ptYhb205nciw5n//N6ItGp2fACxvo08mXzY9PaaZaOpfcEjVp+WVWCw5PnS8k0MedTn4tc6V5cnKyeTspKYkuXboAVFs3FBoayooVK5gwYYLNcl588UVefPFFEhISmDt3Lv369eOuu+5i1qxZzJo1i7KyMhYvXsw999zDrl27aqxTm9bpp+WXMen1bdy64iDT3tyORqenoFRD+MK15tWNuSVqAE6kNiyosTNxNTrK0uttq+CKyg338vthQ/SpmgR+Sl6p4yvYROSXqs0C38QvESkcSsgzC3yAL3ad41pjUJKfI5KpSmRiHmuOpTm3sg5ErdWTWWhwHXLnN9UjoN3x9SHe/ddw/9HGoNyxmYaoa8UVWpatj0Gr0zdRbR3Pu/+eIXzhWr7cFY+UkpFLN3PZB7utzpn97i7GvLqF21Y0PuC9M/joo49ISUkhNzeXV199leuvv97mebfeeTe3P/A4584lAJCVlcXq1asB2LZtG1FRUeh0Ovz9/XFzc0OlUpGRkcHq1aspKSnBw8MDX19fKxWPPdqs0F+x+1y1+LAvrD7B078fs0q71kGuip2Bytgb0OolBWUa5n+0h22nMgFYH5VudkBVG9/tS2Di/23j/S2xbD+dSVZRhdPqXF9MQ057+0A1j4t15fOdZwlfuJavdp+jqFzD1Z/sNTueaw088esxxry2hWXrY8zC3B6bozPM2xqdnpf+PslnO+LNHYKWQlG5hg0nzlulrY9Kp6RCa5W280yW+YP2ytoYfjyYZD4WvnAtT/92zOqDtuNMFsVVymgJ3HjjjcycOZOePXvStXs4U66/j6TcEjS6ymd866kMPs/tT06HIQwcMwkPLx+69RvGF78bQi2eP3+ea665Bn9/fwYMGMCUKVO45ZZb0Ov1vP3223Tp0oXAwEB27NjBJ598Umudap3IFUKsAC4DMqWUg41pgcDPQDiQAFwnpcwzmgs9AwigCPivlPKYMU+CMU0HaGUdFzc408vmsRdmMuzlSsHZ0hxVLfh8P/vic/DzdOWjG0dy64qDDO0WwN8PTayXp8k5gzuz3uJF69XRh09vHsXKfYm4qASXDOjE9tNZzB/ehaHd2jnhTuzz5sbTfLgtjrhX5+DqomL2uzuJzyrhzKtzAMgsKmfMq1tqKaV2xvQI5OA5g5fKlvY72+L7/Yks/qtucQSemtXP7G2yKvdP6cXhpDx+umdci3Cx/MAPkayLOs+WJ6bQq6MvMemFzHlvF1P7deSbO8aYz3t9wyk+3l4Z59jTTUW5xnrUYukuuyot4TcODw/ns88+575tGm4c25398TnVAuTcPK473+9PslNC8/nT/wb4EFhpkbYQ2CKlXC6EWGjcfwY4B0wxfgDmYDBtGmuRb5qUskmWL/t6uNb65U8vLKNnkA/xxgfnvX9jeeffM3Rt58W6RyYx+tXN3DOpJ0/P7t8UVaawXIOPuysuKmEl1IvKtXy/3+CJIqdYbd6uK+ur9KzOZpVYBYr/Zm8CAFtPZbLtyakNq3w9KVVrUQnBh9viAEgvKCc00NscPMTRUbNMAh9gyd8neWZ2f4SgRcQUkFJyxcd7eWhab8b2DGTEy5vR2VHp2cKewAfMAeK/P5DIrePDG1vVRpOUa1AzXvHRHorKK9/P7aezyCqqYF1UOnOGdLYS+AAdfDxIzS+zSrMn8MEQlOXdf8/w6/3jm83vVqlax/nCCkDFjweSsFWNmgS+s6iTyaYQIhz4x6KnfxqYKqVMF0KEANullP2q5GkPnJBSdjXuJwCj6yv0ndnTD/b3IKOwdlVHU/QaTJGDbh7XnVeuGNJsAaSb4l53nMmyqYMN7+BNQk7TzT109vdk/7OXNNn1LInLLMZFJegR5MOWmAxzoPN7JvXgi13nasndMCyjSSXnljLr3Z3sXTi9SeNImDyhNhV3TezBJQM6MaxbO3ya0HS5uEJLu05d6TDnEbzChze4nGYLl2hD6OdLKdsZtwWQZ9q3yPMk0F9WxsM9h2HBgQQ+k1LWaYFDc8XItWTe0BA+unGkw8qrSmG5hqEW+vmwDt4kNqHwq4ozBX9kYh5Xf7LXaeXXl6YMvpGYU0K39t5WI7lFc/qz5nhakxoS/PnAxVz5seE3WDAmlGVXOdfKqbk6MFVZdc84urbzonsH79pPbiS5JWpGLm3YXJQlzhD6jX7ajTahVl8OIcQ04C4MKh8TE6WUI4E5wINCiMk1VPheIUSEECIiK6vmEGlNwdrj6SQbh6Wlam21icbGkl1lYtURAr97oLc53m99+elgEhVaXaPrYIuEGobk9eGK4V14alY/Yl+dQ79gvwaX0+e59Tz+81H2nrU/AFVrG28BE5dZxJQ3tvPsH1H8fKhySL9s/akmtxwzCXyAVQerWzk5kt2xjdPmfnqzdWdrYiOCpSz4Yj+T39hG+MK13P3tIac840eT8wlfuJZ3Np9xeNmOoqFCP8Oo1sH4P9N0QAgxFPgSmC+lzDGlSylTjf8zgT+BMdhBSvm5lHK0lHK0aTVbQ3ndQbba0emFbD2VwcAXNpp7qnvPZpujFTUGS91mYwnyNazSvHxYCJ5uDft5F/4RZQ7T52h8PRs3xH7tyiEALL96KA9O642bi4pv7ryoUWX+cSSVG784QHZxdVVfcm4pfRev57fI+lnBSCk5lJCLlJItMRnc+53B5PTniOQGraVwd1Wxd+F0hhht1Mf37FDvMuzx3J9R/Hkkhf/9dITPd56tPUMtVGh1rDqYxNZTGY0Odj57cIjVftWgQFeO6MrmxyZzsJ5qun9jMpn+pv2A5A3lio/2APBdPefdwNCrX3G78513NlTo/43BHwTG/6sBhBDdgT+AW6SU5k+dEMJHCOFn2gZmAnUzTWggC+f057f7x3PtqG4OKe++7yK58xuDmulwUj4FpRpu/OIAO89k8asNm/Cq3P3tId799wxqrZ4/Dqfw6tpoRi3dbDYpdBQRi2fwy33j+d+MvtUmsLoH1m9YO/+jPTz3ZxQvrj5B+MK1vLo2usH1euzno4x7bQs7ztRt5LZ43oBqaX89OIEbx3YnYfk8qwnYkAAvXr1yMA9O62V1/ubH7A4mbXLx8q0UlGkoKtdQqtby15FUPthqMBtcF5Ver7K+2ZvAtZ/u491/Y7nr24hqVhv15cwrc+jSzss86rhncg+HqeF+OJDEYz8f46+jaY0Oxg7Qb/EGFv0RZX5fHMmTM/ta7f91NJU+wX508vfk69svomu7usc/Ts0v45pP9jba1DM5t5TwhWvJL1U3uIw3rx0GwPT+wY2qS12oi8nmKmAqhsABGcCLwF/AL0B3DAFOrpNS5gohvgSupjLoiVZKOVoI0RND7x4MFkM/yloCoptoqE7fknKNjv7PG3quv9w3nhK1lju+rr7YpTFsf3Iq4TZW/Jow6TX9PFwpqsdDZql/rQtVBcGra6PNE4Pzh3dh9dHGLU5q7+3GkRdmmvf3ns2mb7CfeYRhi692n2PpP3X/YFw9shtvXTfMShcc/9rcOpkclmt07I/P4YXVJ9n02GTz795Y+gX7sdH4EfnlUDKnzhfxwuUD7Z7vSD12zMuz8XI3fOQiE3N56EdDPGQ/Tzd+PJDE74dTeOk/gyjT6Ajv4MO++BweacR6hPduGM7o8EAmLN9qNiyoKxqdnj7Pra/1vAen9eKjbTWPKroHerPz6Wnmtnxmdn/+O7WXVdv2DPJhaxWLs4a0fcLyeew4k8Xwbu0I8HarPQOG0dyzf0Y1WEVmaXJq+d5mF1cw+pV/q6XXh0aZbEopF9g5VG08ZZy0vdtGejwwrLZrOQvLXuGYHoFOucZTvx0jOq2Q3x+4mP6d/Vn0x3F0esnfx9Lws4hjWh+BP6iLPyO6t+ffx6cw4+2GDUUfndHXLPT7d/ZnNWncMSGcr/ckmM+Z3r8TW09l2inBmrxSjXm7Qqvjxi8OMKxbAKsfmmjzfCllvQR+/85+LL/aIGQGhPgTk16Iu6uqzjbmnm4uTO3XiZ1PG9xWuLuoUDtgVerpjCLz9tO/Hwfg+csGUFSh5cEfDvPs3AG4uaiY8faOGj+AdWXPwulMWL6VkABPs8AHGBUWyL5Fla/ejWO7c+PY7lZ5/zOsS6OE/qM/HTVvf78/iRsu6o5ap2dk9/Y15qursPVyc+HxS/tx5YiudPDxoFyr4/Od8eZn0p6gmzvEEOTeFAwesGmRc9v4ML7dVz/1yhc743l1XUzl/q2jySwq56axYea0U+cL2Xoqk1Hd26PVS97adJrDSfm1ll21Pj7uLnx400im9etEqVpLTrH1CKG9k62p2rzvHRPbn5xKmab6xI1JsDSWQwl5gGFZ+J8PXGz19S/X1G0F7NpHJjLv/cpl5u9cPxygUTFRfT1cuXFsdy7p34kpfTvSq6MPlw4MNr9gg7r488Wto630zrVR9eU+llLAh1tjeXPTGW4e151n5w7gv98frpMqp+oHbf7wrmZrmvWPNt4X0s6np5FeUEZOsZrtZzLNdtH3T+lltmGvK2qtnlJ15Uc7p0Rt7pHNea/S34mtuQFb7HhqKt0DvemxaJ1V+r+PT8H0idO3AC+4JtcHJmE8652dXDu6G3dP6mk+pz6qjQem9sJFJejdqXIC/sXLB3H7xeE2VS0DQ/yJTi8krINhJH18ySy+25/I83+dMHcQLKnHEgczlgIf4J6VBu2CWqunk58nWr3e6mNYVy4dGMxL8wez+LKB5hHQ8SWzcDF2YrzdXfEOtBbDLirBVSO6Mn9E1/rfSB2oq8lmfVblCuA9YC5QCtwupTxszHMblf6kX5FSflvbtR2h3rHFwXO5XPfZPvp39iM+u8TKQmNMeCAHEwyLeZ6bO6DaA+EMPrtlFLMGdSavRM2IpZtZeecYJvetnMQ+lJBLWn4Zj/50lFevHIy3uwuP/WxwKXH0hUu55K0dPDy9N7dP6FGn6y36I4pVB5OIWjLTPBK59tO95o9XY6jr+geTSuzvY2ms3JtARGIen948strknSMxWF8ZeoimNmgoi+cN4JW1dXs2enfyJc7oSqGqqmp/fA46veTxX45y18Qe3Du5FxVaHUNe3MTyq4dw1cj6z0stWx/DZzvi652vJj6/ZRRRqQV8sNWwoO6JS/vylh0rlTevHcaTvxqezy1PTOHXiBQyi8r543AqL14+kDvq+JyCYURZodXj71k3tcv5gnLGLau+ivu/U3vxyfbGT1TXhmmV7UXh7fn1/ovN6Sv3JTCmRyD9O/s7vQ6OsNOfDBQDKy2E/utArsWq3PZSymeEEHMxBASYi2E17ntSyrHGj0QEMBqDiWckMEpKWaOUcZbQP5FaYO7B9Av2sxq+n3hpFoNfNPi9SFg+j40nz3OfnV7w0vmDeH71yXpde2yPQA6cy6WDjzu3jg9nYp8gRoXVPHS2hanH3RC9X3GFltPni6pd11k21VU/nlXrLKXkcFJ+g9qhMTzz23Gbztkczbllc0nJK0Orlza9vTqDqr/ltH4dmdinYzV12wcLRjjcJ9Fnt4wyvzOm37qgVMOy9TG8cPlAvN2dr2QoKNMw7KVN/PXgBIaHtgMMH4RL3tpOido5JsnQMlxANNYNA1LKncYFWpbMxzDBC/AtsB2DXf58DB8HCewXQrQzmnVOBTZLKXONldoMzAZW1edmHEWAV2Wv4bu7x/DIqiPsjzf07n09XFkwJpSQAIMlwKxBne2W0xATxM9uGYWfpxsqUd3Fan1wd1ExoXfDTPd8PVybVMBO7BPEg9N6kZZfbtOiSgjR5AIf4P+uGepQoT+5b0fyS9VM69eJVQeTyCyq4D/DuiCEILSe1lOOqMtOCxXbitsvIrtYbSX0TQLK0UJfp5dsemwyReWVc0AB3m4sv7rp3F0HeLlVE8CdAzyJfP5Sxi3bQr7F/FRDeXJmX34/nMr/XT2Up347xu//vbj2TM1MYxZnBUspTXZs5wGTrVFXwPItSjGm2UuvRlMszgoN9OaX+8YT8/JsOvl58ozRv463cdJs2VVDeeSSPtXytbeY2ff1cOXyoV3sXuOfhydy+8Xh1dK93F1wUYlG+wTZ9tRU3l8wolFlVMVFJbhnUt2H3nVlQIg/T83qzzvXD+fiRiywcQYHn72Et66ttDP48e6x3DelJ0G+7rxxzVCb5qP2iM0o4u+HJvLYpX3571SDCallB6MpuW9ypc79/64eghCCjn4eZkF4VS0646dn96vxuC08XA0iRS8lfYP9GBXmHMOJxuDp5kLEczNqPW9Sn9qf0/un9GLbk1MZ0yOQHU9Nc8gkvrNxyPpzW6tyG1mewxZn1cSYHoFmy4gR3dvz073jiFhc88NgOXn18vxBuLqoWH6VYTIp+uVZ5mMdfNwZ3DUAjYXliJ9xVODuoGX/Xdt5WVkGOYKzr83luXkDuSjc0Ou2XNX7wYIRPH9ZpZmirZ65Zc/qwxtHEODlZm6flkonf0+uthh9XNw7iEVzBnDouRlcOzq0mv7581tG2S3rp3vHmbevGdWNWYOCbXYemoIwo7uBFy4byPUXWVv4JCyfx9tGQwFbnFs2lwem9ua5uXX/4AG89J9BzBjQyWo+qiXi6qLiThvzCr//dzzHXpxJwvJ5fHfXWDb+b7I5LOWahyZy8LlL2P3MNDY9NpmE5fNwbSIXHo6kMYq1DCFEiIXTNZPNXyqGAL4muhnTUqlUB5nStzfi+g5nXA2rHHc9PY0HfjjMA1N7MaJ7O2796iATjT2BG8Z054YxhpcqYfk8UvJKzYtErhnVjR8OJPHgtF48NatpvHU6grevG86u2Gy83F048Owl/H00jcuHGUY1JvXAr/eNJ62gDH8vN4Yu2cTMgYbBnqXgv6yGkVBLY1KfIAaGVE6ymUZiLhaTrgvn9GdmFXXfvCEhTOvfiWuqqK38PN347Bbnr7C0R7f23hxfMhO/ejgaW37VEMb27GC+936dq7u4uGdSD46nFDC2RyDvGyd1Dz57CRtPnuf6i0LN70JL54XLB3LnxHD+OZ7O8vWGRWlVRyb9Ovux55np6PTSynS2VWMvjmLVPwxWOics9t8AFhq3FwKvG7fnAesx+NQfBxw0pgdicL3c3vh3Dgis7bpNESPX2ZxIzW9TsUs/2xEnDyfmWqWdOV9oFae2rZFbXCF/Opho9Tt+vuOsDHvmH5mcW9KMNXMMj646bDeeclRKvkzKKWlzMZdNaLQ6ef1ne+X5grLmrorDoIYYuXW13qnPqlyBwf/+bAwmm3dIKSOM5dwJPGss9lUp5de1XdtZ1jsKCo5AStls/tqbmozCcs5mFre4ORmF6jTaZLM5EUJkUenWob4EAU0StKUVobSJbZR2qY7SJrZpDe0SJqW0ObHS4oV+YxBCRNj72l2oKG1iG6VdqqO0iW0a2y5G8/dzgJuUss5+WYQQS4DeUsqbjc4to4EAKWW9Fh04fOpZCCGFEG9Z7D9prCxCiCVCiFQhxFGLv3aOroOCgoJCW0ZKmSSl9K2vwAcnCH2gArhKCGFP8feOlHK4xV++E+qgoKCgcEEiDNiV7Q5X7wghioFXAV8p5XPGsIm+Usolxh5/sZTyzbqWFxQUJMPDwxtUl5S8MgrKNOilJMDLDZ1eotNLs+M1b3cXAn3ccVEJyjV68kvVqLV6fD1ccXNRoZMSrU5PRz8P9NIwkeXuosLHw5W8UjUVWj1Bvh6Ua3SUVGhxd1XR3sed8wXluKoEbi4qNDo9Xu4uaLQSVxeBu4uKCq2eEgvHXa4qgYtKUGHh/yfY35P8UjUCgbeHC1qdxNvdhfOF5eZz2nu74+mmIr9Ug1qrx9VF4O/photKUFSuoUStw9fDlVK1zspxl6ebC+XGNvByc8Hd1VAnb3cXXIRArdNTXK7Fx8OVwnINXdt5odNLPN1UlKp1ZBVVIDEsOirXGPyiuKoEXdt7UabWUVxhCHreyc+DtIJy87VM7WFCJYRVvSz33V1UuLuqkNLg9Eqjr8zn6+GKTi8p1+hwdVGh1enN9QHD8nuTd01fD1c0Oj0anaS9jxvF5VoqtHrcVCoCvN1Qa/W4u6ooU2vxdHOhqFyLWqenk58HFVo9BWUac71MppshAZ7kFKsp0+jwcXfF38uV7GI1Ukq0esN5UhoWKPm4u6DVS9RafbWFLN7uLrT3dic1vwyVEHi5ueDj4UJJhY4StRYXIVCphNkdt5uLoFSto5OfB5lFFbiohM0A6r4erlaOy1xVAg9Xg7mhEIbfvKhCi7uLCiEM7eXr4Wr0b+NKuUZPgJcrGUUVVuW7qARuKhXeHi6UVujQ6PXm4wFebuilpEKjt+nV1N/TjeIKrfn39XRzQaeXCDCbQhaVa/FwVVk5RnRVCYL9PSko01BcocVVJXB1UZmfKdPv7OPuavVOtfd2p1yjsyrL3UVlfs8CvNwoU+vQ6vW4qAQBXm7klqjRGu/Hy80FCZQW5qHSlIJ/Z9p7u5OVFIunlxfSNxidlKgzE3BtH4I2JxkX/47oS/OROh0qLz/c/DsiMUz2U5KLpqQAVCpcvNuhK8rGM6Q3emlouwqNnnKtDn9PN7R6PRUaPaEBbqSlJFFaWoqPjw+enp7odDp69OhBRUUFJ06cYOTIkQghOH36NL6+vhQVFVFaWoqUMldKadMG3VlCvwtwHIM75XuwFvr3AKZltnlSymk2yrgXuBege/fuoxIT6z+PO//D3RxLKWjQPSgoKCgAaPLPk/7No4Q+ugpdcR7nv38S9Hq6PfgtmvzznP/mUbo9uoqk1/+DV6+LCLrsCfTqUtK/+R9Blz2BV89RFB1ZR2HE3wRfvxTh5knWX69RkRRF96dWI1T2bf/Tv3uCB6+fy7Jlyzhw4ADz5s1j/vz5fP/99yQkJNCjRw80Gg2urq5MnTqV+Ph41q9fT79+/XBzczsspbS5itApy8mklIXASuARG4ct1TvVBL4xf6NX5CoCX0FBobG4teuMyt0LdUY8Fckn8OoxEhe/QDQ5yVQkReEROgiTJsV/3DWoPH1x9e+EZ/ehqDMNXk5LTu3Gf/R/cPXviIuXHwHjrq31utrCTNTpsSxduhQPDw8mT57M5ZdfXmOe22+/nUGDBuHq6go1eEhw5hridzEER28al4IKCgoKTsAzdDAVSVGUp5zEI3QwnqFDKE8+QXnyCTxDB5vPc/GpdEsi3DzQqw2qWF1xLi7+lZ1XV/9OtV5TV5SLytMXH59K8RkWFlZDDggNDa3xuAmnCX1p8Kb5CwbBr6CgoNAq8QgdTHlyFBXJJ/EMHYJH9yGUJxmEvkdo7X6lXHzboyusdBypLazdiaSLbyD68mJKSipjKycl1Rz7oa6LBBst9KuaaAJuRtPMdhhCJwYZzxuPYSXvE0ZTzeNCCK0QwvEuHRUUFBQchGf3IZQnRSG1alz9g/DsNojyc5HoywpxD+5Za36f/pMoilyDtjAbXXkxhQd+rTWPa0An3Dv34cUXX0StVrN7927WrFnjiNtxSLhEk4nmMillNvAchonbfCFEGgb3DNFCiCeAI8ByKeUvQohZwGNSynMOqIOCgoKCU3AL7IrKzROPboMAUHl449quMyqvgBonYk34DpuFJjeV9K8fRnh4EzDmSsoTj9eaL+g/T3HgwDcEBgYyfvx4br31VvLz8xt7O4233qnFRPNzDA7XvhRC/I7BX88oKeX/hBAvAVop5dKaym+o7x1nRYBSUFBQaCoaGoWrJt87jtLpfwTcJIQIqJK+BzCFkukJ/IohXCLG9L22CmuKICoKCgoKFyIOCVQppSwUQphMNMssDu0FFhn19glSynLjajFfYBRwwE55nwOfg6Gn74g6KigoKLQ0kt6+xmZ6p2uXWFkGORJHRid+FzgMmN0lSyljjRO6lwP7jMmRwB0YPgLFDry+goKCQqui++O/Nfk1HWayWYOJ5n7gUSqF/j7gfxhUPwoKCgoKTYij7fTfwmiiacEeDOETTbOx+zDo923q8xUUFBQUnEej1TtSSl+L7QzAu8rxNzCEVjTtJ2AIpaigoKCg0MQ4NZS7EOJW4yKsY0KIP4UQiSaXn0IIHyFEshDCzZl1UFBQUFCoxGlCXwgxCFgMTJdSDsOg6z8KTDGechmwUUqpsZFXMdlUUFBQcALO7OlPB341rtI1TfT+DFxvPH6Dcb8ajvCyedXIrg3Kp6CgoNCWcap6xwZ/A7OFEIEY7PS3Ou1KinW/goKCQjWcKfS3AtcKIToACCECjXb5h4D3gH8aEt+xrujbcMB3BQUFhYbiyMVZVbkCgyVPqhBCAluMK3H7YIisFSeE+E1KaXtJWiOxEUVOQUFB4YLHKULf6Eb5MqCXlLLCGCTdHfgRmC+lrL8HtXqi9PQVFBQUquOsnn4IkC2lrAAwTebW1cm/I9gfn9Nk11JQUFBoLThLp78JCBVCnBFCfCyEmGJx7AdjEJWjQog3bGV2hMlmdrG6QfkUFBQUWgKebs4Rz07p6Uspi4UQo4BJwDTgZyHEQuPhm2pT7zjCy+afD1xMO2938krV7DubQ99gP7zdXfhyVzxjenQgJa+UgjINnf096dHRh6iUAso0Ojr5eVBUrqVbey8CvN3JKCjH1UXQwccdrV5yvqCchJwSArzc0OolKblldA7wJNDHnVK1Fn9PN4SAgwl5hPh7opOSdl5uXNQjkCNJ+fi4u6DVSxJySujW3guNVhLk546nqwvZxRV4urlQptHh6+FKaKA3Wr2ktEJLkK8HY3oE8vOhZLq198Lfyw21Vo+bi4pN0ee5ZEAwvTv6UqrWcighj84BHvh7utG7ky+/RaYggJjzRej0kkcu6UNKXimuKhWnzxcR6OPGgXO5eLi6IAR09vdEo9PTyd8TNxdBe2931kWlE+zvSUc/DyISctFLKK7Q4uPhSpCPOx183TlfWEF+qZpgf09KKrQk5ZbSztuNAZ39ScwtpVt7L9LzyxnSzeCBOyG7BIlhebZap6eDjwc5JRVo9ZK+nfwo0+hIzi1lXK8OZBWWczarhDlDOuPr4Yqfpyt743JQqQyjx/SCMsICfQjwckMnJb4erkQm5tHJ34MytY7U/DKGdWtHTHohAAFebqTml9HBx53MogqKK7SM69mBUrWWmPQiQgI8KVXrSMsvw8/TDXdXwdBu7UjPL8PdVUVRuZbU/DJ8PVwpKtcysns7KnR60vLL6dbei4yCctxcVGQXV3DJgGBS8krRScnx5AKGd29HbrGaLu28GBXWnk93nKV7B2/6GZ/RvsF+/HU0FR93V9xdVYQH+ZCQbQibV6HVMX94V46nFBCZmEdybimdAzzpEeRDSIAn++NzaOftTrf2Xmh1khNpBRSVa+nk54Gbi0GIzB0Swt6z2ZxILWRYtwAyiyqIyywmpJ0nhWUaVEKYn8ESteGd0EtJRz8PXFWCCo2euKxi/DzdyCtR07WdF8UVWoZ0C+BcVgld23tRrtERnV5Ie293BODvZViDGd7BsGD/bFYJ5wvL6RfsR4CXGxJJSYWOmYOC+etIKj2CfNkSk4Fap+eyoSEk5JTiIgSF5RpCArzQ6vR4ubvg5e7CqfQiiso1dPTzwM/TjeMp+XT088DdRcWZjGJ8PV3JLVETYHxn+nf2w9/LjYTsEnw8XEnJK2Vy345EpRQAkJJXRoC3Gzq9xMNVhUanx91VRUmFjp4dfUjJKyPQ251SjQ43F0FOsRq1Vk87bze6tvOiTKNDL8FFBWczS+jk70EnPw90esgvUzM6LJCUvFLKNXpK1VpGhbUnyNeDTdEZXBTensIyDRK4bnTdYt7Wl0YHUanTRYS4BrgN8AOerI9OXwiRBSQ28NJBQHYD87ZVlDaxjdIu1VHaxDZ1bRd3YAgGz8JNQRfAAzgHhEkpbS5yctZEbj9AL6WMNSYNxyC46+0g2l7F61iPCHvRYy5UlDaxjdIu1VHaxDZ1bRchRDgGATxOSqltgnotAXpLKW+u6TxnTeT6Ah8YfelrgTjgXuA3DDp9U6CVbCnlDCfVQUFBQUGhCk6ZKZBSRkopL5ZSDpRSDpVSXiWlzJZSTpVS9pNSDjf+KQJfQUGh2RFC3CGEWGOxHyuE+NViP1kIMdy45qij8Xi+EOIjYTRLFEK4CCHeFEJkCyHigToFuBVC3C6EiBdCFAkhzgkhbrJI3yOE+FAIUSCEOCWEuMQiXw8hxA5jvs1Ud2tv+3pNodNvDEFBQTI8PLy5q9EqyClWE+jjThNaxiootAkqKiqIiYlh2LBhaDQaTp8+jZSSoUOHWh07fPgwAQEBhIeHo9friYmJITw8nICAALKyssjIyKBv376oVCrOnj1LcXExI0eOtGuurtPpOH78OAMGDMDT0xONRoNWq8XLy4vs7GwSExPp1q0bnTp1Ii8vj8TERIYMGYKrqyunTp3Cx8eHrl27UlJSQlxcHO3ataNHjx5ERkZm21WNSykb9QckAFEYPGhGGNMCgc1ArPF/e2O6AN7HoO45DoysrfxRo0ZJhdr5fn+CDHvmH/nh1tjmroqCQqukW7duMjIyUq5atUrec8898qKLLpIxMTFyxYoV8vLLL5dSSgnIXbt2mfNce+21ctmyZVJKKadNmyY/+eQT87GNGzdKQGo0GrvXLC4ulgEBAfK3336TpaWlVse+/vprGRISIvV6vTntoosukitXrpSJiYnSxcVFFhcXm48tWLBA3nTTTaZ6Rkg7MtVR6p1p0qCuMU1uLAS2SCn7AFuM+wBzMLhh6INBx/+Jg65/wZNrXJdQqnb6fJGCQptkypQpbN++nZ07dzJlyhSmTp3Kjh072LFjB1OmVC416ty5s3nb29ub4mJDqO+0tDRCQyvNLMPCwmq9po+PDz///DOffvopISEhzJs3j1OnTpmPd+3a1WqUEBYWRlpaGmlpabRv3x4fH596XQ+ctzhrPvCtcftbDH54TOkrjR+m/UA7IUSIk+pwQaHW6QFwd3Fp5pooKDQcjU6PvpkcZ5mE/q5du5gyZQpTpkyxKfTtERISQnJysnk/KSmpTtedNWsWmzdvJj09nf79+3PPPfeYj6Wmppo0KuYyu3TpQkhICHl5eZSUlNT7eo4Q+hLYJISIFELca0wLllKmG7fPA8HG7a5AskXeFGOaFUoQlfpjEvpuropCX6H10ue59Tz12/FmufaUKVPYtm0bZWVldOvWjUmTJrFhwwZycnIYMWJErfmvu+463n//fVJSUsjLy2P58uW15snIyGD16tWUlJTg4eGBr68vKlWlWM7MzOT9999Ho9Hw66+/EhMTw9y5cwkLC2P06NG8+OKLqNVqdu/ezZo1a2q4UiWOEPoTpZQjMahuHhRCTLY8aNKD1adA6YAgKo5ESkmF1mleoB2CRmto4j8Op6IxfgAUWhcrdp/jpTUnm7sazc7vh1Oa5bp9+/bF19eXSZMmAeDv70/Pnj2ZMGECLnUYQd9zzz3MmjWLYcOGMXLkSK666qpa8+j1et5++226dOlCYGAgO3bs4MHFy8zHx44dS2xsLEFBQTz33HP89ttvdOjQAYAff/yRAwcOEBgYyEsvvcStt95ap/t0qPWOcXFAMXAPMFVKmW5U32yXUvYTQnxm3F5lPP+06Tx7ZY4ePVpGRDjdKWeNvLXpNB9sjSP65Vl4uzvTG3XDef6vE3y337BwedGc/tw3pVcz10ihvoQvXAtAwvI6Wfq1OfR6Sc9n1wGVbZBVVMFlH+ziu7vG0jfYrzmr1yR8uSueV9bG8O2dYzi3dy1ffvklu3fvrnc5QohIaWcBWaN6+sbg5n6mbWAmcAJDhKzbjKfdBqw2bv8N3CoMjAMKahL4LYXvjcK0TN1ye/tafWXvftn6UzWcqdDa+XZvgtmHUFtCbWOEuin6PBmFFXy951wz1KhpOJKUZ5Yx0cbfNbOw3GnXa2y3NRj40zi77Ar8KKXcIIQ4BPwihLgLg/uF64znrwPmYjDZLAXuaOT1mwS11qQvb+roknVHo6v/iC05t5QAbzf8Pd2cUKOmYUtMBp38PM1O3NoaUkpeWhPNDWNC6d/ZH4AX/zaogNraiMCWWlKjNRkotNx3ry74+vraTF+/fj23rDUI+pvHhZlljburihKbORpPo1pSShkvpRxm/BskpXzVmJ4jpbxEStlHSjlDGoKiY7TaeVBK2UtKOUQ2QTAVR9AQgdrUVH1htsRk1Jpn0uvb+M8H9R86tiTu+jaCyz+0fQ/HkvO55K3tFFe0XjPWtIJyvtmbwJ1fHwLAEerYgjINp863vJGC6T1zcxHV0lwthH5sRpFZOLYWiouLbf6Z5g9MaHSVH7nbb7+9Qaqd2mjdn886cL6gvNEPiK1hZ3NwJCmPyMRcm8e0VT5Md31bt+9pQk5pjcellGw4cR5dK4s/ueFEOkvWnORsVgnHU/KrHd92OpP+z69vkR+E4S9vMre31vjsuRgFodYBv8OwlzYx+91djS7H0ZjeU1cL6xWzVZpR6GcWlXPpOzvNo52GsvZ4Onvims+B6Nd7zvHLoWSrtIIyDRtPGjpr7k7UKrRpoa/V6Rm3bAtP/HqsQflv+Hwf66MqpxyawmPF6qOpFJRpbB678uO9XP3JPqu0wnINGp3e5tA4MafxA8S1Uenc/30kX+6Kd0gvsyGotXqrD/eWmIwa723f2Rzu//4wR5LyAfAwvkDnskvYdjoTgDc2nKZcozf7qW9J5Jdq2HjyPGDR+zUKwrZsmaUxC3hRLc0kBPNLDe9GRILtzk9defDHw9z05YFGldEYXloTzdO/W5umpuaVmbcVod9AKoyC4t/oDF5bF2Ozx2cPvV6yPz6X//5w2Jy2Obp2lUljOH2+iEd/OsrC32u3U165L4HwhWsZumQTD/94xGYPcMob20nNL7ORu3b0esmy9TEcTsw3163HonVmC6GmZPCSjVz06r/m/bu+jeCSt3bYPT+npMJq38PVYG437c3t3GFUk5gmvl1dmn5dw8p9CcRnFdd4jinGs6mepp6uyTS3rbHojyj+Y1TTWQo884fAGCzHNAJyUbXO9Sh6vaRcY9sgxNIYY09cDl/tds7kdZsV+uUaHYeT8sz7n++M55pP99WQo5JStdb8wbBk9dFUh9XPFoXlhl5MVlFFtWNV1StvbDht3t5w8rzdHmBeie2wkZbl3fTl/mrrEI4k5/PZjnhWGK0mUowfjz+awYZardVXG/3UpOaoqurysNFrMp1jqUpoCrQ6PS+sPsm1tTyLpnqZhLyri2DHmSzWGkeerrUIvT1x2VzzyV6zeqils+pgEnnGXrxKCD7eHkdxhdb8O5mMKEzPraoRXgVLLFR6PxxIbFKrvLc2n6b/8xtsHrN8prefzuSzHWedUoc2K/Sf+u04t3x10CrNpZYHpVyjQ6eXDHxhIw+vMvTwLV8uF5Ugp7i6QHYUJksFW73PqtfV6K1f5l2xtvWTl32wm7hM617ljV/s56Ntceb9PXE5xKQXAYawg6+ti6GiSm/E9LIdScpn1cG6Lfd2Bm9vOm33WEmFFp1eVvsAutmw/DC1n6Wa6Kvd50gzftwKyzVEpzl+stOkoy4qr3kuwfTcmerpqhLctuIgz/4ZZdivZYTy2M9HiUjMI8fORx8cMyncWHR6aV6fYCKzqILXN5zm9Q2nzJ0v029oeg4bM0Kz1OU/9+cJ3tho/5lyNKsOJts9ZtlZ0ej0Np9bR9Bmhb6lzq/MKMDs9Y5uW3GQxX9F0f/5DTyy6ggA/8YYdL+Ww8jtp7MY9cq/nC+ovw1tbom6VmdoZv85RnXEN3vOEb5wLSfTChjz2hbzeRtPnqdcU/ce3LZTmVb7e8/m8PbmM1ZpJpO4//10lM93VvbwTUQmVo6aFv0RVedr1wdbqihLAf73sTTe3xpX7RwTg17cyJO/Hqs2KhIC9sfnmPdL1VqScw3XuuvbCM5mFZOWX8bSf6K5ePlWAG758gBz33f8ZKep5+6iEmQUltsVvC4qwVe7z7HV+BweM8ZvNVHbCMXUBFWfeMu2KdPoeOrXYzZHlk1FTSvdk3JLLaxZjOod2fieftXnI7/U/oexKgWlGqt5vvqiqcGoZInF5LRap7ea23AkbVbo2zKzLKrQEpNeiJSSPw6nUK7RodHp2XEmi+/3G3qva6v8oLaerYa8JCOXbuZyO+aRK/clcCA+x9wjV2t13PnNIZasiQZgXZU63fdd/UJuWqpG7AkZd1cVSTmlZmsW00fP3rmOZndsNhOWb2Xtcet7XbaucqHZT1VGGJaOuUwv8p9HUqupfqSEpf9Em/cvfXun1fHcEnU1dV5VIesoTB/2Mo2Osa9tYeU+23MkLirB0n+i+XCb7Y+cLZ12VEqBuR1Mv/NtXx/iX4u5KKuP6NE0fo1MYXmVxXwFZQ0f5RSUapj4f1s5kVpz+5WpdZSqtWw9Zf852346y9z7fX71Sco1OvNvXptOv0Krs2u1p6vyDrioBJGJeXUaxd//fST//eFwgxdP1WQJGG2x4E6tdV5Pv2X6FHAA2XZ+wJu+PMBb1w3j8V+OcTKtkJS8mk0WbfWo7ZVdG2ezbFuKvLDa2vxsf7y1ZUJjzfQ+3BbH0G4BXDowmNMZRTbP+Xh7HH8crtuchZsDJ9GWrz/FqLD2xGYa6nU8NZ95Qysdr1oKj71nc6zybj9TKTAse4y25jdOWgixqiMKlbCer3Gmn6WqL/2Lf59kVFh7Bne1XlwWYTGyskXVUevxlHz+8+EeHr2kD49d2tc8ERyTXsg930UQ+8ocAKvn3dROu2IrnRoeTc7nyV+PEZdZXK/FXxqdnmXrTtGjow8peWV8uDWOT28ZZXWOXi/5dOdZYjOK+fNI3Z41y9+ysExjfhdcVIK+i9ej1ur5YMEILh/WBYCX1pxkct+O3PH1IYJ8PYhYbB2c796VEWyqYpBRqtFx9Sd76RHkw7Ynp9ZYn9jMmifgbaHVGeakOvh6VHs2D9mxQtLopCL0HUVuidpswXEoIZfjDejR3fHNIY48fyntfdxrPE+t1ZNTUsEn2ysnZMIXruWxGX15dEYfoG561aoTkw3h3u8i+ejGkXy5O97m8boKfKib5YReL9FLabWoxhafGierHpvRt9qxglINZ2uwcrnzm8q1CJa60pfWRFudt6sWe+yqZrBJtaxdsCS3RM3IpZv56rbRXDIg2JxeUKrBy90Fd1cVB+Jz6BPsh4sQNof3l32wm7E9Aq3S3t8SW+N1c0rU5BRX4OPhyoFzuRQb5wjOGD/qlk+MlND7ufXVyjB1QjKLKtDq9JxIK+SKj/aYjx9JyuOJX4/Rt5Mfn94yip8PJREa6M3FvapH5dscnWGlEnSxUE38dSSVMT0Cic0s5vUN9dOfl1t8gN1dVWahqRKVdv0PrzrCvCEh7Dmbzdd7Evh6TwJg6JxV1Y1XFfiAeXR5zob5brlGx5e74rl3ci9+OJBo7vCp6tHxefmfaFbuS+TES7Oo2n97/JejNvPklqgJbe9V52vUhyYX+kKI2cB7gAvwpZSydv+jTqIhAt/EiKWbGR7ajnsn9yQtv4yLewWx/kQ6907uyeboDIortNV68Cbe+fcMlw0LoVdHX5sPYVUc1fM8m1Vstl1vDIXlWso1Ou769hB74nJ49crBPPfnCWYMCGb24M78dDCJ46kFqLV6brgolCHdArh8WBf8Pd04kVpAVnEFF/fqYKWCe+dfwxzDZzvimTM4xEr41AVL9U1Vnv/rRL3KslywZppk9HRT8fSs/twwJpSX10Rz/UWhBPt7ciw5HzDMDYzv2YHv7hrDvzGZ3P99JMNC23HViK5WC4k2P2blhNbMgXP1tzsf9UqlGeu9k3sCsP7EecYv22K2Z6+Jb/YmmLdtfRSu/HgvAPFZJazYfY6XLdr48mFdePzSvgT5uhObWcwDFqbNYDCaMFnF/O/no4R38OaZ2f3rfnNGTIuVAIa/vNm8XXU0/OSvx/jDxuhh++ksPtgay/GUAib1qT2E7LqodC4Z0InUvDKe/TPKfJ0/DqcSb/FROJNRREGZhuyiCvw83RjYxd9meRqd3qzCu86GxZaoNutSibN6+k0aI1cI4QKcAS7F4Ev/ELBASmn3jW2ol82qFgEKCgoKzuL5ywZadTx83F0ocYApaEP9KznNy2YDGAPEGX32qIGfMETTUlBQUGi1VB1pOkLgO4umFvpNEjmrucKtKSgoKLR0WuRErpTyc+BzACFElhCioWv/g4Dm86rUMlHaxDZKu1RHaRPbNFm7iP9rcFa7UdKbWuinAqEW+92MaXaRUjY4XqIQIsKeXutCRWkT2yjtUh2lTWzT2tulqdU7h4A+QogeQgh34AYM0bQUFBQUFJqAJu3pSym1QoiHgI0YTDZXSCmVSNAKCgoKTYRTevpCiFAhxDYhRLQQ4qQQ4lFj+hLgCwyhEouAI864vgWfO7n81ojSJrZR2qU6SpvYpl7tIoR4RgiRKoQoEkKcFkJcIoRYIoT4RQix0ph+Uggx2iLPACHEdiFEvvHYf4zpPYxpKuP+F0KITIt83wkh/ldjfZxhpy+ECAFCpJSHjYHTI4ErMMTKLZZSvlnXsoKCgmR4eHi965BfqqFCqyPY37PeeRUUFBQcQXl5OWfOnKF///64u7tTUWFY0ZuTk8P58+fp1asX/v7+pKWlUVRURP/+/ZFScvLkSTp06EBwcDDFxcWcPXuWAQMG4OnpyfHjx+nVqxc+Pj6cOHECKSW9e/fGy8uL48eP07t3b2JiYrLtzYc6Rb0jpUwH0o3bRUKIGGyYZtaF8PBwGro4ywWIaGPBoxUUFFoPcXFxXHzxxbz99ttMmTIFNzc3AJYsWcLu3bv591/Dquro6GhGjRpFREQEu3bt4tprryU5ORmV0ZvqggUL6NevH0uWLOGWW25hxIgR3HjjjUyZMoX58+fTs2dPZs2axYgRIzhx4gQuLi52LR6dPpErhAgHRgCm2GQPCSGOCyFWCCHaO/v6CgoKCs1F7969effdd1myZAmdOnXihhtuIC0tDYDOnTubz/P29qa8vBytVktaWhqhoaFmgQ8QFhZGaqrB0HHKlCls376dnTt3MnnyZKZOncqOHTvYsWMHkyZNsspnC6cKfSGEL/A78D8pZSHwCdALGI5hJPCWnXyNWpyloKDQ9pFS8vam0+bANy2VG2+8kd27d5OYmIgQgmeeeabG87t06UJycjJ6i0BJSUlJdO1qUJZMmTKFXbt2sX37dqZMmcLEiRPZs2cPO3bsYMqUKbXWx2lCXwjhhkHg/yCl/ANASpkhpdRJKfUYJnTH2MorpfxcSjlaSjm6Y8cGm+krKCi0YWLSi3h/axwP/ni49pObidOnT7N161YqKirw9PTEy8ur1p742LFj8fb25vXXX0ej0bB9+3bWrFnDDTfcAECfPn3w8vLi+++/Z8qUKfj7+xMcHMzvv//efEJfCCGAr4AYKeXbFukhFqddCdTP/aFCgyjX6IhJb1hQDAWFloopYIy9YCktgYqKChYuXEhQUBCdO3cmMzOTZcuW1ZjH3d2dNWvWsH79eoKCgnjggQdYuXIl/ftXeimdMmUKHTp0IDQ01LwvpWTkyJG11slZ1jsTgV1AFGD6RZ4FFmBQ7UggAbjPOOlrl8Z62Wyol7q2xH+/j2T9ifMcXzITf0+35q6OQj3R6vR8tz+Rm8aGOSVqWWslKqWAyz/czaAu/qx9ZFJzV6dFUZOXTWdZ7+ymenhOgHXOuJ5CzRw0+mqv0OihjVmw5pWoWfRHFP939VACvNvmB23VoWReWhNNqVrHg9N6N3d1WgzSGCqmEeFyL0iUbsMFRFt8Ob7cHc+Gk+f5bn9Cc1fFaRSVGwKiFJbXHhjlQsKkpKgpEIlCdRShfwGgOJpuGyjCzTZtsTPjTBShb+TLXfHE2gka3laIa0BQZwWFlorSmWkYitDHYO/7ytoY/vNh/eKythb0xnHwDZ/vb+aaOJ662iHo9bJOQehbIq202k7H9HsqHf36oQh94EyGoQdcpmm5Ic4ag+4CiCQmahjj5xRX0PPZdXxrEQi8NVKTGiOzqJz0gpa9SMnRmJ9qRb9TLy44ob/p5HnisyrVHKVqLbPe3Qm03WfnQgofmVVUwe+RKVZpKXkGYfj74Rrj9bR47D2eSTmljHl1C+OXbbV5vEKr49u9CW3uOaicyFWoDy0yXKIzufe7SMBgv59XoubhVZXendvqw9PG3vUaufvbQxxLKWBS3yA6+RnsU03qLVUb/YHnvLezxuMfbo3jg61x+Hm6ctXIbk1UK4WWygXX07fk4+1x7I6rDHVZk4qgNaOzUApPe3M796ys/2K3lkBmUXm1tKrfs/OFhnMsVVqmrdb6+76z+QwAH28/a5VeUqElfOFaStQ1qyVzS9SG82s5r/Wh2Ok3hAta6FelrT47lsP6c9klbI7OaMbaNIw1x9IY8+oWvtuXUON5tmy3zRN+wiAATYvVWgtai99Po6t0OZBaR0dj+jaqBlHUOw1DEfoWtNUeg64NmH+YBPXzq2uOrlnZq69MMwk9lRBc/9k+rvtsnxNq2DRMeX0b++NzAPhhv22X6VJKPtoWR3JuqSkFaHvPd+t/qpuHJhf6QojZxpBhcUKIhU157aoTWb9EWE/4tdXFL21A5tul6r2Ze3+WQl9fqdOPNa5VaK2TmmkF5WbT22/32Rb6aQXlvLHxNHd9ewhoOytX7Znctla1XXPRpEJfCOECfATMAQYCC4QQA5vq+toqL3pBmfWyduXZaR2Y9PWDX9zIpzsMem7Tb5ddbAhHZyng9DaEXkse/cRlFlOm1iGl5ERqQb3yFpRpzMKxuFwLVE5kt+bn+8EfD9Nj0ToyCsvNczumnzA6rZAzGUVUaNvanIVzaOqe/hggTkoZL6VUAz8B85vq4rXZq1do9a12Ac+FhEmvXVyhtXuOpYCTNoReS127oNdLZry9g3u/i2D10TQu+2C3zfPsrR5/fcOpyrKMt3i+0PQhbL2sPW5wxjv2tS2MeXULUPkxK9PomPnOTp745Viz1a+xaHR6Vu5LsJqzcRZOca1s92JCXAPMllLebdy/BRgrpXzIXp7GulYeEx5oTtPq9RxOyjenH0yoPqHn7qpieLd29b5eS8bWfVq2S2vA8h5Gdm+Hq0pllebhqmJYt3bmtOGh7XB3MfRpUvJKSSuwtvwZFdYelxbY9ZVIDiXkOay8qs95a/vdTVR9hseEB1JYruHU+aJq6a0RW79RgLcbX9xq0ztyrTS5a+XGIoS4F7gXoHv37o0qy8XCONtF5QJAe283q3RLhndrZ/dYayU00Ivk3DI6+nmQVWTo9bW2exwY4k+0MRCMh6tLtePDqvxuXm6V54QGepNWUE54B2/yyzTkl2rMH4SWh+EefNxd6B3sx7HkfJtnubkINDrbHbbhoe04mpxPRz8PXFQCd1cVaq2e0WHtW93vbsJ0DyZcVIL23u5W53i6qVrt/Y3o3o4jSfkMDPE334OzOiVN3dMfDyyRUs4y7i8CkFLaDSUjhMgC7EZ2r4UgILvWsy4slDaxjdIu1VHaxDatoV3CpJQ2Y802tdB3Bc4AlwCpwCHgRillzXZ4Db9ehL0hzoWK0ia2UdqlOkqb2Ka52kUIcRNwm5RyZmPKaVL1jpRSK4R4CNgIuAArnCXwFRQUFNoSUsofgB8aW06T6/SllOtQwiYqKCgoWCGEcJVS2jdJcxAtdTbLUXze3BVogShtYhulXaqjtIltHNYuQogEIcQzQojjQIkQYrEQ4qwQokgIES2EuNLi3NuFELst9qUQ4n4hRKwQIl8I8ZGow0q1JtXpN4SgoCAZHh7e3NVwKueyS9Do9PQN9mvuqigoKDQhUVFRuLi40Lt3b1xdXSkoKMDHxwc3Nzfy8vJITExk8ODBuLm5kZ2dTXZ2Nv379wcgMjKSgIAAwsPD0ev1xMTEEB4eTkBAAJGRkdn2JnKRUrbov1GjRsm2Ttgz/8iwZ/5p7mooKCg0MWFhYfKrr76ye3zYsGHyr7/+klJK+fXXX8sJEyaYjwFy165d5v1rr71WLlu2zHQsQtqRqW1dvaOg0Gr4bn8iB4zO1BQuHEJDQ83bK1euZPjw4bRr14527dpx4sQJsrPtW4d27tzZvO3t7U1xce1xsJ0i9IUQoUKIbUad1EkhxKPG9CVCiFQhxFHj31xnXF9BoTXy/F8nuL4NxjFWqBmTGj4xMZF77rmHDz/8kJycHPLz8xk8eLDDXcM4y3pHCzwhpTwshPADIoUQm43H3pFSvumk6yooKCi0SkpKShBC0LGjQRX/9ddfc+LECYdfxyk9fSllupTysHG7CIgBujrjWgoKCgptgYEDB/LEE08wfvx4goODiYqKYsKECQ6/jtOtd4QQ4cBOYDDwOHA7UAhEYBgN1OhdqqEO11oTJudwCcvnNXNNFJqT1vIcRCbmklOsZuagzrWfrNAs1ORwzakTuUIIX+B34H9SykLgE6AXMBxIB96yk+9eIUSEECIiKyvLmVVUcBKbozOaxE1sSyCvRM3++BxOpBaQlFNae4ZWztWf7OPe7yKbuxotmm2nMilroTGJnSb0hRBuGAT+D1LKPwCklBlSSp2UUg98gcG/fjWklJ9LKUdLKUeb9Fstjb+PpXH3t217BNJQdp7J4p6VEbz3b2xzV6VJWPDFfm74fD+XfbCbyW9sa+7qKDQzMemF3PHNIV782/H6eEfglIlc46qwr4AYKeXbFukhUsp04+6VQMtslTrwyKojzV2FFospelVKXtvv9QLVfLorXNiYIvIltNBRn7N6+hOAW4DpVcwzXxdCRBmXHE8DHnPS9RWakco4tbZXhK8+mkp+qboJa6SgUJ0rPtpjnkdxJKaIXi3Vtb9TevpSyt3Yjs6mOFq7ADCZBth6ABJzSnj0p6NM7tuRlXfa1O4pKDQJR+0EqGkspk6PqgVGZoO273Ct0RxKyGX5+lO1n2iBXi+rBV03Ua7RkVFYbvNYW8FsEWbjmS/XGCZ30/PLmrBGTctr62KITDQYpen1ksJy28+CJc62ojOh1uopVTvdkaMVheWaFhuT2BlU9vQVod8qufbTfXy642y98nywNY5hL20yhya0pP/zGxj72haOp+TXWs7hpDz+jc6o17VbApU9ffsPfUt7H9RaPR9vj6NC23iLi893xnP1J3sBeH3jaYYu2VSr4G8qmXjVJ3sY+MLGOp0bmZjLlpjGPX8lFVqGLtnEsnUxjSqnNaE3qzebtx72UIR+FUrVWnbF1t1M1FYPbW1UGgA5JdWFvonotMJqafoqb/5VH+/l7pWty0KoXKPj6d+OA4556Oe8t4u7vjnU+IJqYeW+BF7fcJovd50jIiGX8IVric+y7cfEdPxcdkmt5a4+mgpAUXnNvWu9xXOU5sRR0InU6s+dPa7+ZB93NdJCzfSxW3M8rVHltEQOnsu1OTdl+i3PZhbbfYaaE0XoV+GZ36O45auDJOZYv9D2ht+2emimoWx9Axuv3Jdg3v75UFK98jqLzMLyeqkDLC1ZbN29pOYubUZhOeWayt52THohW05l1vn6DaW4wnCPFRodfx4xCOo9cbYdXf18KBmA/34fyXN/RtVYrumxySuxPXEdlVLAnPd2WT1vFy/fWq+610SpWktmA9SJOcX2Oyy1Ua7RcdXHeziWnN/gd6Glo9dLrvtsH7d8dRAwWOzkmn5j42+eVlDO9Ld2NFMN7aMI/SrEZhiElkkImDA9vOeyS6zsz/VVPgZ/HknhbJbhBVbVc/r+SHI+b2w8hV4veeb3moVJUzHmtS1c/cm+Op9/xUd7zNvnC8t5a9Npmx9Me6qfsa9t4dYVB+tf0UZi+nirVKLWEcqvkSmA4QP3w4GaP86mj9xlH+yudiw1v4zLP9xNTHohH2+vnwqxrlz76T7GvLal3vk+2Bpn3j6WnG/ukHxSh3qeTCvkcFI+L/59Er1xfV5934XmRErJ+1tiSbAxkkvJK+XtTafRGG/sRFoBACNe3sTIpQb3YlU7Nsm5Lct0s8nDJbYWStU6/jySYt7PKVETkZDHh9viiEmvHCLrpeRwUh4erioGdQngsZ+PmY9d8tYO+nf2Y8P/JvPoT0dYfbTmIa7p+EfbnCMA7FFYrmHokk0snjeAuyf1rHbc8n4B9p3NoaOfB8eS83ni12PcN7kni+YOqJZvV2w2u2KzcVEJ/jejL1DZ8z2dUUROcQUdfD2q5Tt4LpeIhFx8PR3zeEop+f1wKpcNDcHTzcXmOfvPGlwaq4Tg+/0GQV5oQyVT31XGVUeCz/91gu/2J5KwfB7nCyx64E7S6Z+0oUasC9/sTTBvzzd+yF9YbR3Oevpb2yks0xCx+FKrdFNHSC+lebFaSl4Zo5ZuJvJ563Obklnv7OS0sVP3xwMXm9Of/u0Yv0Sk8MWto7lnZQQ/3j2Wtzef4ctd8RSWa1l6xWBuGRcGwAM/HOZ4SgEzBgab82cXV1j9zvoqj0hWcQWhgd7Ou7F60uRCXwgxG3gPQ2D0L6WUy5u6DnXh+b9OWKkqxtrpLf0WmcJzfxrWmMW/Vt1TtKmMqgI/o7CCgS9s4Nf7xzuqyg3GNOH8w4Ek7p7Uk/u+i6BrO29euHygzfMXfGHt/veznfGUaexPgL77byw6vSQqtYD/TullTr/zm0OsfmgiAK9vOGUloK75tO6ji9rYFJ3Bk78eIzazCJ1OsvpYGoeem2E+nlFYzsGEXABcLHqkuSVq1Fo9EQm5dA7wpGdH32ofwJooqdBSdZDz3f5E87blKLHqiLE+JOaUMPvdXax7dBI9gnwaXE59iTeOaCMT8ygoUzOxd0c+2X6Wd/49A8DxlAKr83PsqLicSXRaIT07+uDp5mIW+AB7LVR3v0QYOnfrogzrRg8nGSyvTB/9nw4mmYW+SfVo+axWnXOq+lueSi9iYIi/3Q5HU9OkQl8I4QJ8BFwKpACHhBB/Symjm7IeVdHrJU/8eoxDCbmk5Bkm0c5k1G2VpUngA7y9+YzNcx74obqfkvUn0ilV6/hmT0L9K+wkCo1mphtPGiw2LIV+YbmGL3fGM6F3kM28K/cl2kw3YVIXbD9dOUmeaDHsdZZ6AzDrWvNLNPwcYdDHf7EznpvHheHmIlh7PN18rqVqp0yjY+k/0WZBff+UXvWy5Br20ia0Fl3ATSfPm7eziip4/Jej5v2qIj8qpYAh3QLM+29tOs2kPh0Z0yOw2nX+OpJGmUbH75EpPDmrn826PP3bMV65YojNY29uPM2Ufh25KNxQ9uAX62bdY8JkqVQXiso16PUgVODv6Vav69TG8vWnmDkomJHd2wNQUKph7vu7mDc0hElVnltbCwdNczlvbrJ+j3V6yU8HkzieWsCZDMPE7KI/KtWvUamVH7fn/oyinbf1fT37ZxQRibm8fd1wytQ6VCrwcG2+D0BT9/THAHFSyngAIcRPwHyg2YT+4aQ8jiXnm39wEw0xoftwW5zN9HVR56ulmUYAFdrmd0pmsifOKVFbTSharlYcumQTAO9vtX2PDSG/tHb7dRNSSrsrfGvDpJJxc63M/+q6GF5dF8OcwZ1Zf6Ly97GccPyxir6+vqa72ioPkaWTsis+2kOqhZVO1ZHgVZ/sIfbVypHjB1vj+GBrnE0PnC7GmTldDaOFXyJSuHxYF6u0MxlFxKQX8uG2OD7cFseup6fROcCz2nyWIxlifI4A/ju1Fz2CfLhudGgNOerOpzvO8umOs+Y2Uht/97XH060+7ABvbDxd53Ljs0tY+IftOTYprT/Y9uZ4Dp4zjCQHvLABP09XopbMMh/7PTKF4d3b0aujb53r1BiaNDC6EOIaYLaU8m7j/i3AWCnlQ/byNNS18oDnN9SoclBQUFBoyQT5ehCxeEbtJ9qgJtfKLXIiVwhxL3AvQPfu3RtUxoPTeqHR1f5BO5ddwvnCcvJL1STlluKmUlFUocXP05Wici0dfNzJKVHjohLo9BIvNxerj0l7bzfyjD3WIF93sout9ZbjegZyNDnfvBLVxKAu/pxMK+S+KT35bEc8AJ38PPD1dMXf0w13VxUHz+XSrb0XV4/s1qA2qA9/HkmloEzDbReHczQ5n51nKtUw/YL9kEgqtHpyi9UU1bEneOeEHqzYcw4AdxcVeinp5OdBmnEC84aLQgn29wQMv8Pp80VWetdJfYJILygnNa+MeydXn2CuK1JK/jiSyvzhXVgXdZ5z2SUE+3sQ1sGHXh19OJFaaB6iPzK9N7mlar7fn0SfTr4M6uLPX7VMwM8f3sXcU+/W3susInR3UdHJ34PiCi35pRpGhbWnV0cffolI4b7JPfnneDquLoL0gnI6+3vSI8iH5LxScorVzBsaQkeLSe7tZ7LoF+xLSICXzfv7/XAqV47oajUnAZCcV0pcZjFaneTSgcHEZRWTX6pmdFggGYXlnEgrwFWlIj6rmP8M70IHHw++2n2Ojn4e5nUIpnegMYztYXgPtHpptoS7amRXotMKmeUgv/zbT2fSv7M/nQM8zWm/RCSj0UmGdQvgaHK++T78PFwp0+gI9vckNb+MwV39q61huCi8PfmlGib0DmLlvgTz6N/XwxVPNxeyiysY1i2AY1XmLmzJgdvGh9HO2533tsQypW9Hhoe2Mx/bGZtFzyBfurW3/m19PJyjAmrqnv54YImUcpZxfxGAlHJZDXmygJoVxvYJAuxHFb4wUdrENkq7VEdpE9u0hnYJk1La9Evf1ELfFTgDXAKkAoeAG6WUJ2vM2PDrRdgb4lyoKG1iG6VdqqO0iW1ae7s0qXpHSqkVQjwEbMRgsrnCWQJfQUFBQaE6Ta7Tl1KuQ3GxrKCgoNAstHU3DJ83dwVaIEqb2EZpl+oobWKbVt0uTarTV1BQUFBoXtp6T19BQUFBwYI2KfSFELOFEKeFEHFCiIXNXR9nIIRYIYTIFEKcsEgLFEJsFkLEGv+3N6YLIcT7xvY4LoQYaZHnNuP5sUKI2yzSRxnjGccZ87Z4N4lCiFAhxDYhRLQQ4qQQ4lFj+gXbLkIITyHEQSHEMWObvGRM7yGEOGC8j5+FEO7GdA/jfpzxeLhFWYuM6aeFELMs0lvt+yaEcBFCHBFC/GPcb/vtIqVsU38YrILOAj0Bd+AYMLC56+WE+5wMjAROWKS9Diw0bi8E/s+4PRdYj8HF/TjggDE9EIg3/m9v3G5vPHbQeK4w5p3T3PdchzYJAUYat/0wmAcPvJDbxVhPX+O2G3DAWP9fgBuM6Z8C/zVuPwB8aty+AfjZuD3Q+C55AD2M75hLa3/fgMeBH4F/jPttvl3aYk/f7N9HSqkGTP592hRSyp1AbpXk+cC3xu1vgSss0ldKA/uBdkKIEGAWsFlKmSulzAM2A7ONx/yllPul4cleaVFWi0VKmS6lPGzcLgJigK5cwO1ivDdT+CY3458EpgO/GdOrtomprX4DLjGOZuYDP0kpK6SU54A4DO9aq33fhBDdgHnAl8Z9wQXQLm1R6HcFki32U4xpFwLBUkqTZ6nzgMnpt702qSk9xUZ6q8E4/B6BoWd7QbeLUYVxFMjE8AE7C+RLKU3+NCzvw3zvxuMFQAfq31atgXeBpwGTj5QOXADt0haFvgKGHh5OC83RshFC+AK/A/+TUlo5VLkQ20VKqZNSDge6YeiB9m/eGjU/QojLgEwpZXW/522ctij0UwFLX63djGkXAhlGFQTG/6bgsvbapKb0bjbSWzxCCDcMAv8HKeUfxuQLvl0ApJT5wDZgPAZVlmlxpuV9mO/deDwAyKH+bdXSmQD8RwiRgEH1Mh1DcKe23y7NPang6D8Mq4zjMUyqmCZQBjV3vZx0r+FYT+S+gfWE5evG7XlYT1geNKYHAucwTFa2N24HGo9VnbCc29z3W4f2EBj07O9WSb9g2wXoCLQzbnsBu4DLgF+xnrB8wLj9INYTlr8YtwdhPWEZj2GystW/b8BUKidy23y7NHsFnPQjzsVguXEWeK656+Oke1wFpAMaDPrCuzDoGLcAscC/FoJKYIhYdhaIAkZblHMnhsmnOOAOi/TRwAljng8xLuRryX/ARAyqm+PAUePf3Au5XYChwBFjm5wAXjCm98TwAYszCjoPY7qncT/OeLynRVnPGe/7NBZWS639fasi9Nt8uygrchUUFBQuINqiTl9BQUFBwQ6K0FdQUFC4gFCEvoKCgsIFhCL0FRQUFC4gFKGvoKCgcAGhCH0FBQWFCwhF6CsoKChcQChCX0FBQeEC4v8B2bAoBJwWNHQAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 8 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 设置需要可视化的列表\n",
    "groups = [0, 1, 2, 3, 4, 5, 6, 7]\n",
    "i = 1\n",
    "# 数据探索EDA\n",
    "plt.figure()\n",
    "for group in range(8):\n",
    "    plt.subplot(8, 1, i)\n",
    "    plt.plot(values[:, group])\n",
    "    plt.title(dataset.columns[group], y=0.5, loc='right')\n",
    "    i += 1\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[129.   -16.    -4.   ...   1.79   0.     0.  ]\n",
      " [148.   -15.    -4.   ...   2.68   0.     0.  ]\n",
      " [159.   -11.    -5.   ...   3.57   0.     0.  ]\n",
      " ...\n",
      " [ 10.   -22.    -3.   ... 242.7    0.     0.  ]\n",
      " [  8.   -22.    -4.   ... 246.72   0.     0.  ]\n",
      " [ 12.   -21.    -3.   ... 249.85   0.     0.  ]]\n"
     ]
    }
   ],
   "source": [
    "# 将分类特征wnd_dir 进行标签编码\n",
    "encoder = LabelEncoder()\n",
    "values[:,4] = encoder.fit_transform(values[:,4])\n",
    "# 设置数据类型均为flast32\n",
    "values = values.astype('float32')\n",
    "#pd.DataFrame(values).to_csv('values.csv')\n",
    "print(values)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(43800, 8)\n"
     ]
    }
   ],
   "source": [
    "# 对所有数据进行0-1规范化\n",
    "scaler = MinMaxScaler(feature_range=(0, 1))\n",
    "scaled = scaler.fit_transform(values)\n",
    "print(scaled.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "       var1(t-1)  var2(t-1)  var3(t-1)  var4(t-1)  var5(t-1)  var6(t-1)  \\\n",
      "1       0.129779   0.352941   0.245902   0.527273   0.666667   0.002290   \n",
      "2       0.148893   0.367647   0.245902   0.527273   0.666667   0.003811   \n",
      "3       0.159960   0.426471   0.229508   0.545454   0.666667   0.005332   \n",
      "4       0.182093   0.485294   0.229508   0.563637   0.666667   0.008391   \n",
      "5       0.138833   0.485294   0.229508   0.563637   0.666667   0.009912   \n",
      "...          ...        ...        ...        ...        ...        ...   \n",
      "43795   0.010060   0.264706   0.278689   0.763638   0.333333   0.385730   \n",
      "43796   0.008048   0.250000   0.278689   0.781818   0.333333   0.395659   \n",
      "43797   0.010060   0.264706   0.262295   0.781818   0.333333   0.405588   \n",
      "43798   0.010060   0.264706   0.262295   0.781818   0.333333   0.413996   \n",
      "43799   0.008048   0.264706   0.245902   0.781818   0.333333   0.420866   \n",
      "\n",
      "       var7(t-1)  var8(t-1)   var1(t)   var2(t)   var3(t)   var4(t)   var5(t)  \\\n",
      "1       0.000000        0.0  0.148893  0.367647  0.245902  0.527273  0.666667   \n",
      "2       0.000000        0.0  0.159960  0.426471  0.229508  0.545454  0.666667   \n",
      "3       0.000000        0.0  0.182093  0.485294  0.229508  0.563637  0.666667   \n",
      "4       0.037037        0.0  0.138833  0.485294  0.229508  0.563637  0.666667   \n",
      "5       0.074074        0.0  0.109658  0.485294  0.213115  0.563637  0.666667   \n",
      "...          ...        ...       ...       ...       ...       ...       ...   \n",
      "43795   0.000000        0.0  0.008048  0.250000  0.278689  0.781818  0.333333   \n",
      "43796   0.000000        0.0  0.010060  0.264706  0.262295  0.781818  0.333333   \n",
      "43797   0.000000        0.0  0.010060  0.264706  0.262295  0.781818  0.333333   \n",
      "43798   0.000000        0.0  0.008048  0.264706  0.245902  0.781818  0.333333   \n",
      "43799   0.000000        0.0  0.012072  0.279412  0.262295  0.781818  0.333333   \n",
      "\n",
      "        var6(t)   var7(t)  var8(t)  \n",
      "1      0.003811  0.000000      0.0  \n",
      "2      0.005332  0.000000      0.0  \n",
      "3      0.008391  0.037037      0.0  \n",
      "4      0.009912  0.074074      0.0  \n",
      "5      0.011433  0.111111      0.0  \n",
      "...         ...       ...      ...  \n",
      "43795  0.395659  0.000000      0.0  \n",
      "43796  0.405588  0.000000      0.0  \n",
      "43797  0.413996  0.000000      0.0  \n",
      "43798  0.420866  0.000000      0.0  \n",
      "43799  0.426216  0.000000      0.0  \n",
      "\n",
      "[43799 rows x 16 columns]\n"
     ]
    }
   ],
   "source": [
    "# 将时间序列数据转换为适合监督学习的数据\n",
    "reframed = series_to_supervised(scaled, 1, 1)\n",
    "print(reframed)\n",
    "reframed.to_csv('reframed-1.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>var1(t-1)</th>\n",
       "      <th>var2(t-1)</th>\n",
       "      <th>var3(t-1)</th>\n",
       "      <th>var4(t-1)</th>\n",
       "      <th>var5(t-1)</th>\n",
       "      <th>var6(t-1)</th>\n",
       "      <th>var7(t-1)</th>\n",
       "      <th>var8(t-1)</th>\n",
       "      <th>var1(t)</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.129779</td>\n",
       "      <td>0.352941</td>\n",
       "      <td>0.245902</td>\n",
       "      <td>0.527273</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>0.002290</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.148893</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.148893</td>\n",
       "      <td>0.367647</td>\n",
       "      <td>0.245902</td>\n",
       "      <td>0.527273</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>0.003811</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.159960</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.159960</td>\n",
       "      <td>0.426471</td>\n",
       "      <td>0.229508</td>\n",
       "      <td>0.545454</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>0.005332</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.182093</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.182093</td>\n",
       "      <td>0.485294</td>\n",
       "      <td>0.229508</td>\n",
       "      <td>0.563637</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>0.008391</td>\n",
       "      <td>0.037037</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.138833</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0.138833</td>\n",
       "      <td>0.485294</td>\n",
       "      <td>0.229508</td>\n",
       "      <td>0.563637</td>\n",
       "      <td>0.666667</td>\n",
       "      <td>0.009912</td>\n",
       "      <td>0.074074</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.109658</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   var1(t-1)  var2(t-1)  var3(t-1)  var4(t-1)  var5(t-1)  var6(t-1)  \\\n",
       "1   0.129779   0.352941   0.245902   0.527273   0.666667   0.002290   \n",
       "2   0.148893   0.367647   0.245902   0.527273   0.666667   0.003811   \n",
       "3   0.159960   0.426471   0.229508   0.545454   0.666667   0.005332   \n",
       "4   0.182093   0.485294   0.229508   0.563637   0.666667   0.008391   \n",
       "5   0.138833   0.485294   0.229508   0.563637   0.666667   0.009912   \n",
       "\n",
       "   var7(t-1)  var8(t-1)   var1(t)  \n",
       "1   0.000000        0.0  0.148893  \n",
       "2   0.000000        0.0  0.159960  \n",
       "3   0.000000        0.0  0.182093  \n",
       "4   0.037037        0.0  0.138833  \n",
       "5   0.074074        0.0  0.109658  "
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 去掉不需要预测的列，即var2(t) var3(t) var4(t) var5(t) var6(t)var7(t)var8(t)\n",
    "reframed.drop(reframed.columns[[9,10,11,12,13,14,15]], axis=1, inplace=True)\n",
    "reframed.to_csv('reframed-2.csv')\n",
    "reframed.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 训练集80%，测试集20%\n",
    "values = reframed.values\n",
    "n_train_hours = int(len(values) * 0.8)\n",
    "train = values[:n_train_hours, :]\n",
    "test = values[n_train_hours:, :]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(35039, 8)\n"
     ]
    }
   ],
   "source": [
    "# :-1表示从0到数组最后一位，-1表示数组最后一位\n",
    "train_X, train_y = train[:, :-1], train[:, -1]\n",
    "test_X, test_y = test[:, :-1], test[:, -1]\n",
    "print(train_X.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 转换成3D格式 [样本数, 时间步, 特征数]\n",
    "train_X = train_X.reshape((train_X.shape[0], 1, train_X.shape[1]))\n",
    "test_X = test_X.reshape((test_X.shape[0], 1, test_X.shape[1]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[[0.12977867, 0.35294122, 0.24590163, ..., 0.00229001,\n",
       "         0.        , 0.        ]],\n",
       "\n",
       "       [[0.14889336, 0.36764708, 0.24590163, ..., 0.00381099,\n",
       "         0.        , 0.        ]],\n",
       "\n",
       "       [[0.15995975, 0.4264706 , 0.22950819, ..., 0.00533197,\n",
       "         0.        , 0.        ]],\n",
       "\n",
       "       ...,\n",
       "\n",
       "       [[0.01810865, 0.2794118 , 0.42622948, ..., 0.20394772,\n",
       "         0.        , 0.        ]],\n",
       "\n",
       "       [[0.02313883, 0.2794118 , 0.42622948, ..., 0.2138768 ,\n",
       "         0.        , 0.        ]],\n",
       "\n",
       "       [[0.02012072, 0.2794118 , 0.40983605, ..., 0.22228491,\n",
       "         0.        , 0.        ]]], dtype=float32)"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "shape =  (35039, 1, 8)\n",
      "8\n",
      "Epoch 1/10\n",
      "1095/1095 - 4s - loss: 0.0021 - val_loss: 0.0021\n",
      "Epoch 2/10\n",
      "1095/1095 - 1s - loss: 8.0844e-04 - val_loss: 0.0011\n",
      "Epoch 3/10\n",
      "1095/1095 - 1s - loss: 8.0661e-04 - val_loss: 0.0011\n",
      "Epoch 4/10\n",
      "1095/1095 - 1s - loss: 8.1072e-04 - val_loss: 0.0011\n",
      "Epoch 5/10\n",
      "1095/1095 - 1s - loss: 8.0958e-04 - val_loss: 0.0011\n",
      "Epoch 6/10\n",
      "1095/1095 - 1s - loss: 8.0745e-04 - val_loss: 0.0011\n",
      "Epoch 7/10\n",
      "1095/1095 - 1s - loss: 8.0525e-04 - val_loss: 0.0011\n",
      "Epoch 8/10\n",
      "1095/1095 - 1s - loss: 8.0317e-04 - val_loss: 0.0011\n",
      "Epoch 9/10\n",
      "1095/1095 - 1s - loss: 8.0126e-04 - val_loss: 0.0011\n",
      "Epoch 10/10\n",
      "1095/1095 - 1s - loss: 7.9955e-04 - val_loss: 0.0011\n"
     ]
    }
   ],
   "source": [
    "# 设置网络模型\n",
    "model = Sequential()\n",
    "print('shape = ', train_X.shape)\n",
    "model.add(LSTM(50, input_shape=(train_X.shape[1], train_X.shape[2]))) # 1,8, train_X.shape = (35039, 1, 8)\n",
    "print(test_X.shape[2])\n",
    "model.add(Dense(1))\n",
    "model.compile(optimizer='adam', loss='mse')\n",
    "# 模型训练, verbose = 2 为每个epoch输出一行记录, =1为输出进度条记录, =0 不在标准输出流输出日志信息\n",
    "result = model.fit(train_X, train_y, epochs=10, batch_size=32, validation_data=(test_X, test_y), verbose=2, shuffle=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 模型预测\n",
    "train_predict = model.predict(train_X)\n",
    "test_predict = model.predict(test_X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAD6CAYAAAClF+DrAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAAnlElEQVR4nO3de3Rc5Xnv8e+jiyV8wfgiTfAtEtgYJGuwQTiAmjYJJTZJFk5OSWqnpPSUE9oUaEgaEtMmnIS1OAvaHEK7Amnd4oYmBOND0lOv1gGSQA4tGGPjGCzfYoEByxBLli/Y+CrpOX/sLTwzHmm2ZGn2SPP7rDVLe9797j3PHvD8Zva75x1zd0RERHqUxF2AiIgUFgWDiIikUTCIiEgaBYOIiKRRMIiISBoFg4iIpIkUDGa20My2m1mLmS3Nsr7CzB4L1681s5qUdXeE7dvNbEHYNt3MnjGzLWa22cy+mNL/b8xsm5m9Ymb/ambnnPlhiohIVJbrewxmVgr8GrgaaAXWAUvcfUtKnz8Dku7+p2a2GPiUu/++mdUBjwLzgSnAz4ELgGrgXHffYGbjgJeAT7r7FjP7KPC0u3ea2b0A7v61vmqcPHmy19TUDODwRUSK10svvbTX3asy28sibDsfaHH31wDMbAWwCNiS0mcR8M1w+XHgu2ZmYfsKdz8O7DSzFmC+u68B3gZw90NmthWYCmxx96dS9vsCcF2uAmtqali/fn2EQxERkR5m9ka29iinkqYCu1Lut4ZtWfu4eydwEJgUZdvwtNM8YG2Wx/5j4KcRahQRkUES6+CzmY0Ffgzc5u7vZKz7K6ATeKSXbW8ys/Vmtr69vX3oixURKRJRgmE3MD3l/rSwLWsfMysDxgMdfW1rZuUEofCIu/8kdWdm9kfAJ4A/8F4GQdx9mbs3untjVdVpp8hERGSAoowxrANmmVktwYv6YuCzGX1WATcAawjGBJ52dzezVcCPzOw+gsHnWcCL4fjDQ8BWd78vdUdmthD4KvA77n5k4IcmItK7kydP0trayrFjx+IuZchVVlYybdo0ysvLI/XPGQzh1UG3AE8CpcByd99sZncB6919FcGL/A/CweV9BOFB2G8lwUB1J3Czu3eZ2W8BnwM2mdnG8KH+0t1XA98FKoCfBfnBC+7+pxGPX0QkktbWVsaNG0dNTQ3ha82I5O50dHTQ2tpKbW1tpG1yXq46HDQ2NrquShKR/ti6dSsXXnjhiA6FHu7Otm3buOiii9Lazewld2/M7K9vPotI0SqGUID+H2dxB8NPfwr33BN3FSIiBaW4g+EXv4BvfhOOH4+7EhEpQgcOHODBBx/s93Yf+9jHOHDgwOAXFCruYGhqCkLhpZfirkREilBvwdDZ2dnndqtXr+acc84ZoqqKPRiuvDL4+9xz8dYhIkVp6dKlvPrqq8ydO5fLLruMD37wg1x77bXU1dUB8MlPfpJLL72U+vp6li1b9t52NTU17N27l9dff52LLrqIz3/+89TX1/PRj36Uo0ePnnFdUb7HMHIlEjBzZhAMt98edzUiEpPbnriNjb/ZOKj7nPu+udy/8P4++9xzzz00NzezceNGfvnLX/Lxj3+c5ubm9y4rXb58ORMnTuTo0aNcdtll/N7v/R6TJk1K28eOHTt49NFH+cd//Ec+85nP8OMf/5jrr7/+jGov7k8MEJxOev55GAGX7YrI8DZ//vy07xr83d/9HRdffDGXX345u3btYseOHadtU1tby9y5cwG49NJLef3118+4juL+xABBMDz8MOzYARdcEHc1IhKDXO/s82XMmDHvLf/yl7/k5z//OWvWrGH06NF86EMfyvot7YqKiveWS0tLB+VUUtF/Ynj3srnBgsYZRCTPxo0bx6FDh7KuO3jwIBMmTGD06NFs27aNF154IW91FXUwfOHfv0DdL/4bTJgQnE4SEcmjSZMm0dTUxJw5c7g9Y5xz4cKFdHZ2ctFFF7F06VIuv/zyvNVV1KeSaifU8ubhVk584KOM0icGEYnBj370o6ztFRUV/PSn2X+OpmccYfLkyTQ3N7/X/pWvfGVQairqTwzJRBKA3Q3vh61bYd++mCsSEYmfggH41XlnBQ06nSQiUtzBcO7Yc5l41kSennwIyso0AC0iQpEHg5mRTCRZf2ALXHKJgkFEhCIPBoBkdZLmtmb8yith3To4cSLukkREYqVgSCR59+S77Ll4Jhw7Bhs2xF2SiEisFAzhAPSGngFonU4SkTwZ6LTbAPfffz9HjhwZ5IoCRR8M9dX1GMa67l1w3nkKBhHJm0INhqL+ghvA6PLRzJw4k1faXgnmTXryyWBCvSL5yT8RiU/qtNtXX3011dXVrFy5kuPHj/OpT32Kb33rW7z77rt85jOfobW1la6uLr7xjW+wZ88e3nrrLT784Q8zefJknnnmmUGtK1IwmNlC4G+BUuCf3P2ejPUVwL8AlwIdwO+7++vhujuAG4Eu4M/d/Ukzmx72TwAOLHP3vw37TwQeA2qA14HPuPv+MzrKHJKJJC/veRmavgI/+AG89hqcf/5QPqSIFJLbboONGwd3n3Pnwv3399klddrtp556iscff5wXX3wRd+faa6/l2Wefpb29nSlTpvAf//EfQDCH0vjx47nvvvt45plnmDx58uDWTYRTSWZWCjwAXAPUAUvMrC6j243AfnefCXwHuDfctg5YDNQDC4EHw/11An/h7nXA5cDNKftcCvzC3WcBvwjvD6lkIsmr+17lyPx5QYNOJ4lInj311FM89dRTzJs3j0suuYRt27axY8cOGhoa+NnPfsbXvvY1/vM//5Px48cPeS1RPjHMB1rc/TUAM1sBLAK2pPRZBHwzXH4c+K6ZWdi+wt2PAzvNrAWY7+5rgLcB3P2QmW0Fpob7XAR8KNzXw8Avga8N8PgiSSaSOE7z5G7mjx8fBMMf/uFQPqSIFJIc7+zzwd254447+JM/+ZPT1m3YsIHVq1fz9a9/nauuuoo777xzSGuJMvg8FdiVcr81bMvax907gYPApCjbmlkNMA9YGzYl3P3tcPk3BKebhlTPlUmvtDfDFVfoE4OI5EXqtNsLFixg+fLlHD58GIDdu3fT1tbGW2+9xejRo7n++uu5/fbb2RBeUt/XlN1nKtbBZzMbC/wYuM3d38lc7+5uZll/Ws3MbgJuApgxY8YZ1VFzTg1jR43llT3hAPQ3vgH79wfTcYuIDJHUabevueYaPvvZz3LFFVcAMHbsWH74wx/S0tLC7bffTklJCeXl5Xzve98D4KabbmLhwoVMmTIllsHn3cD0lPvTwrZsfVrNrAwYTzAI3eu2ZlZOEAqPuPtPUvrsMbNz3f1tMzsXaMtWlLsvA5YBNDY2ntHvcpZYCQ3VDWEw/M+gcc0a+NjHzmS3IiI5ZU67/cUvfjHt/vnnn8+CBQtO2+7WW2/l1ltvHZKaopxKWgfMMrNaMxtFMJi8KqPPKuCGcPk64Gl397B9sZlVmFktMAt4MRx/eAjY6u739bGvG4B/6+9BDURPMPhll0FpqU4niUjRyhkM4ZjBLcCTwFZgpbtvNrO7zOzasNtDwKRwcPnLhFcSuftmYCXBoPITwM3u3gU0AZ8DPmJmG8Nbz9vze4CrzWwH8Lvh/SGXTCTZf2w/b3UfhHnzFAwiUrQijTG4+2pgdUbbnSnLx4BP97Lt3cDdGW3/BWT9Bpm7dwBXRalrML03AL3nFaY2NcGyZXDyJJSX57sUEckTd8eK4MuswQmc6Ip+SoweDYkGgFMD0EePwq9+FXNVIjJUKisr6ejo6PeL5nDj7nR0dFBZWRl5m6KfEqPHOZXnMGP8jHBqjM8Fjc89B/Pnx1uYiAyJadOm0draSnt7e9ylDLnKykqmTZsWub+CIUUykQw+MUyZAjU1wU99fulLcZclIkOgvLyc2trauMsoSDqVlKKhuoFte7dxoutEcDrpueeCCfVERIqIgiFFMpGks7uTbXu3wZVXwttvw+uvx12WiEheKRhSpF6ZRFNT0KjLVkWkyCgYUlww6QJGlY4KgmHOHDj7bAWDiBQdBUOKspIy6qvqg2AoLYXLL1cwiEjRUTBkeO/KJAhOJzU3w4EDsdYkIpJPCoYMDdUNvH34bfYe2RsEgzu88ELcZYmI5I2CIUPPAPSmPZvgAx/QhHoiUnQUDBnSrkwaOxYuvljBICJFRcGQITE2QfWY6vRxhrVrgwn1RESKgIIhi2QiGcyZBEEwHDkCL78cb1EiInmiYMgiWZ2kua2Zru6uU190e/75eIsSEckTBUMWyUSSY53HaNnXAtOmwfTpGmcQkaKhYMgi7bcZQBPqiUhRUTBkUVdVR4mVsKltU9DQ1AS7d8Obb8ZbmIhIHigYsqgsq2T2pNnpnxhAp5NEpCgoGHqRNjVGQ0PwnQYFg4gUAQVDL5KJJDsP7OSd4+9AWZkm1BORohEpGMxsoZltN7MWM1uaZX2FmT0Wrl9rZjUp6+4I27eb2YKU9uVm1mZmzRn7mmtmL5jZRjNbb2ax/Ohyzzegm9vC8pqaYNMmeOedOMoREcmbnMFgZqXAA8A1QB2wxMzqMrrdCOx395nAd4B7w23rgMVAPbAQeDDcH8D3w7ZMfw18y93nAneG9/OuoTrLlUnd3ZpQT0RGvCifGOYDLe7+mrufAFYAizL6LAIeDpcfB64yMwvbV7j7cXffCbSE+8PdnwX2ZXk8B84Ol8cDb/XjeAbNjPEzOLvi7GAyPQhOJZWU6HSSiIx4ZRH6TAV2pdxvBT7QWx937zSzg8CksP2FjG2n5ni824AnzezbBMF1ZbZOZnYTcBPAjBkzIhxG/5hZ+tQY48ZBMqlgEJERrxAHn78AfMndpwNfAh7K1sndl7l7o7s3VlVVDUkhyergyiTv+WJbz4R6nZ1D8ngiIoUgSjDsBqan3J8WtmXtY2ZlBKeAOiJum+kG4Cfh8v8hPPUUh2QiyTvH3+HNg+EX2668Eg4fDgahRURGqCjBsA6YZWa1ZjaKYDB5VUafVQQv6ADXAU978DZ7FbA4vGqpFpgFvJjj8d4Cfidc/giwI0KNQyLttxlAX3QTkaKQMxjcvRO4BXgS2AqsdPfNZnaXmV0bdnsImGRmLcCXgaXhtpuBlcAW4AngZnfvAjCzR4E1wGwzazWzG8N9fR7432b2MvC/CMcR4jCneg6QEgwzZsDUqQoGERnRogw+4+6rgdUZbXemLB8DPt3LtncDd2dpX9JL//8CLo1S11AbVzGO2nNqT82ZZHZqQj0RkRGqEAefC0ra1BgQBMOuXcFNRGQEUjDkkEwk2d6xnWOdx4IGjTOIyAinYMghmUjS7d1sad8SNFx8MYwZo2AQkRFLwZDDaVcmlZXBBz6gYBCREUvBkMP5E87nrLKzTh9nePllOHQovsJERIaIgiGH0pJS6qvrT12ZBKcm1Fu7Nr7CRESGiIIhgp6pMd5z+eXBpavPPx9fUSIiQ0TBEEEykaTt3Tb2HN4TNIwfD3PmaJxBREYkBUMEpw1AQ3A6ac0a6OqKqSoRkaGhYIigIZHxoz0QBMOhQ9Dc3MtWIiLDk4IhgsmjJzNl3JRTv80A+qKbiIxYCoaIGqobTv2aG0BNDZx7roJBREYcBUNEyUSSze2b6ewOf6RHE+qJyAilYIgomUhyousEv+749anGpiZ44w3Yneu3h0REhg8FQ0S9XpkE+tQgIiOKgiGiCydfSFlJWXowzJ0Lo0crGERkRFEwRDSqdBQXTb4oPRjKy2H+fAWDiIwoCoZ+aEg0pM+ZBHDllbBxIxw+HEtNIiKDTcHQD8nqJG8efJMDxw6camxqCr79vG5dbHWJiAwmBUM/9AxAp32f4Yorgr86nSQiI0SkYDCzhWa23cxazGxplvUVZvZYuH6tmdWkrLsjbN9uZgtS2pebWZuZnTanhJndambbzGyzmf31AI9t0GW9MmnCBKivVzCIyIiRMxjMrBR4ALgGqAOWmFldRrcbgf3uPhP4DnBvuG0dsBioBxYCD4b7A/h+2Jb5eB8GFgEXu3s98O3+H9bQmDJuChPPmpgeDHBqQr3u7ngKExEZRFE+McwHWtz9NXc/AawgeOFOtQh4OFx+HLjKzCxsX+Hux919J9AS7g93fxbYl+XxvgDc4+7Hw35t/TymIWNmJBPJ9DmTIAiGgwdh8+Z4ChMRGURRgmEqsCvlfmvYlrWPu3cCB4FJEbfNdAHwwfCU1P8zs8si1Jg3yeokzW3NdHvKpwN90U1ERpBCHHwuAyYClwO3AyvDTx9pzOwmM1tvZuvb29vzVlxDooHDJw7z+oHXTzWedx4kEgoGERkRogTDbmB6yv1pYVvWPmZWBowHOiJum6kV+IkHXgS6gcmZndx9mbs3untjVVVVhMMYHFkHoDWhnoiMIFGCYR0wy8xqzWwUwWDyqow+q4AbwuXrgKfd3cP2xeFVS7XALODFHI/3f4EPA5jZBcAoYG+EOvOivqoew7IPQO/cCW+/HU9hIiKDJGcwhGMGtwBPAluBle6+2czuMrNrw24PAZPMrAX4MrA03HYzsBLYAjwB3OzuXQBm9iiwBphtZq1mdmO4r+XAeeFlrCuAG8KQKQhjRo1h5sSZ2YMB9KlBRIa9siid3H01sDqj7c6U5WPAp3vZ9m7g7iztS3rpfwK4PkpdcUkmkqcHw7x5UFkZBMN118VTmIjIICjEweeCl0wkadnXwpGTR041jhoFl10Gzz8fX2EiIoNAwTAADdUNOM7mtozvLTQ1wYYNcORI9g1FRIYBBcMAZL0yCYJg6OzUhHoiMqwpGAagdkItY8rHnB4MV14Z/NUAtIgMYwqGASixEhoSDadPjTFxIlx0kYJBRIY1BcMAJauDK5NOu5K2qSkYgNaEeiIyTCkYBiiZSLLv6D7ePpzxhbamJjhwALZujaUuEZEzpWAYoIZEA9DLADTodJKIDFsKhgFqqO4lGGbOhKoqBYOIDFsKhgGacNYEpp89/fRgMAuuTlIwiMgwpWA4A1mnxoDgdNKrr8KePfkvSkTkDCkYzkAykWTr3q2c6DqRvqJnnEHTY4jIMKRgOAPJRJLO7k62792evuLSS6GiQqeTRGRYUjCcgV6nxqiogMZGBYOIDEsKhjMwa+IsRpWO6n2c4aWX4OjR/BcmInIGFAxnoLy0nLqqutOnxoAgGE6ehPXr81+YiMgZUDCcoV6vTNKEeiIyTCkYzlCyOslbh96i40hH+orJk2H2bAWDiAw7CoYz1DMAvalt0+krNaGeiAxDCoYz1OuVSRAEw759sH376etERApUpGAws4Vmtt3MWsxsaZb1FWb2WLh+rZnVpKy7I2zfbmYLUtqXm1mbmTX38ph/YWZuZpMHcFx5kxiboGp0lcYZRGTEyBkMZlYKPABcA9QBS8ysLqPbjcB+d58JfAe4N9y2DlgM1AMLgQfD/QF8P2zL9pjTgY8Cb/bzeGLR6wD07NkwaZKCQUSGlSifGOYDLe7+mrufAFYAizL6LAIeDpcfB64yMwvbV7j7cXffCbSE+8PdnwX29fKY3wG+Cngv6wtKMpGkua2Zru6u9BU9E+ppagwRGUaiBMNUYFfK/dawLWsfd+8EDgKTIm6bxswWAbvd/eUItRWEZCLJ0c6jvLr/1dNXNjXBr38N7e35L0xEZAAKavDZzEYDfwncGaHvTWa23szWt8f8optzABr0qUFEho0owbAbmJ5yf1rYlrWPmZUB44GOiNumOh+oBV42s9fD/hvM7H2ZHd19mbs3untjVVVVhMMYOnVVdZRYCZv2ZLlktbERRo3SOIOIDBtRgmEdMMvMas1sFMFg8qqMPquAG8Ll64Cn3d3D9sXhVUu1wCzgxd4eyN03uXu1u9e4ew3BqadL3P03/TqqPKssq+SCSRdknxqjsjKYbVXBICLDRM5gCMcMbgGeBLYCK919s5ndZWbXht0eAiaZWQvwZWBpuO1mYCWwBXgCuNnduwDM7FFgDTDbzFrN7MbBPbT86vXKJAhOJ61fD8eO5bcoEZEBKIvSyd1XA6sz2u5MWT4GfLqXbe8G7s7SviTC49ZEqa8QJKuTrNy8kkPHDzGuYlz6yqYm+Pa3g9lWe8YcREQKVEENPg9nPQPQzW1Zvq+nL7qJyDCiYBgkfV6ZVF0Ns2YpGERkWFAwDJIZ42dwdsXZ2SfTg1NfdPNh8Z09ESliCoZBYmY0VDf0PQC9d2/wZTcRkQKmYBhEPVcmebZPBT2DzjqdJCIFTsEwiJKJJAePH2TXO7tOX3nhhTBhgr4BLSIFT8EwiPocgC4pCcYZ9IlBRAqcgmEQzameA/QSDBCcTtq2DTo6sq8XESkACoZBdHbF2dSeU9v7lUmaUE9EhgEFwyDrc2qMyy6D8nKdThKRgqZgGGQN1Q1s37udY51Z5kU66yy45BIFg4gUNAXDIEsmknR5F1vbt2bv0NQE69bB8eP5LUxEJCIFwyDr88okCILh+HHYsCGPVYmIRKdgGGQzJ86ksqyy92DQhHoiUuAUDIOstKSUOdVzer8y6X3vg/POUzCISMFSMAyBZHUfVyZBcDrpuec0oZ6IFCQFwxBoSDSw59097Dm8J3uHpiZob4dXX81vYSIiESgYhkDPAHTOL7rpdJKIFCAFwxBoqG4A+rgyqa4OzjlHwSAiBUnBMASqxlRx7thzew+GkhK44goFg4gUJAXDEEkmkr2fSoLgdNKWLbBvX/6KEhGJIFIwmNlCM9tuZi1mtjTL+gozeyxcv9bMalLW3RG2bzezBSnty82szcyaM/b1N2a2zcxeMbN/NbNzBn548Ukmkmxu20xnd2f2Dj3jDGvW5K8oEZEIcgaDmZUCDwDXAHXAEjOry+h2I7Df3WcC3wHuDbetAxYD9cBC4MFwfwDfD9sy/QyY4+5J4NfAHf08poLQUN3A8a7j7OjYkb3D/PlQWqrTSSJScKJ8YpgPtLj7a+5+AlgBLMroswh4OFx+HLjKzCxsX+Hux919J9AS7g93fxY47TyKuz/l7j1vs18ApvXzmApCzqkxRo+GefMUDCJScKIEw1Qg9bcqW8O2rH3CF/WDwKSI2/blj4GfZlthZjeZ2XozW9/e3t6PXebHhZMvpKykLPcX3V58EU6cyF9hIiI5FOzgs5n9FdAJPJJtvbsvc/dGd2+sqqrKb3ERVJRVcOHkC3mlLUcwHDsGv/pV/goTEckhSjDsBqan3J8WtmXtY2ZlwHigI+K2pzGzPwI+AfyB+/CdNyKZSLJpT44rk0Cnk0SkoEQJhnXALDOrNbNRBIPJqzL6rAJuCJevA54OX9BXAYvDq5ZqgVnAi309mJktBL4KXOvuR6IfSuFJVid54+AbHDx2MHuHKVOgpkY/9SkiBSVnMIRjBrcATwJbgZXuvtnM7jKza8NuDwGTzKwF+DKwNNx2M7AS2AI8Adzs7l0AZvYosAaYbWatZnZjuK/vAuOAn5nZRjP7+0E61rzLOTUGaEI9ESk4ZVE6uftqYHVG250py8eAT/ey7d3A3Vnal/TSf2aUmoaDhsSpqTF+a8ZvZe/U1ASPPAI7dwbTcYuIxKxgB59HgqnjpjKhckLuK5NA4wwiUjAifWKQgTEzkokcv81QXw9nnw3f+x68+SaMHZv7NmYMlOk/nYgMDb26DLFkIsn3N36fbu+mxLJ8QCsthSVL4J//uX/TY1RW9h4aUcIl262iAsxOPYY7dHdnv3V1DW17SUlwKy0NbqnLmfcHsi71OEXi5h78W+jshJMng79Rl+vrYcKEQS1HwTDEkokkh04c4o0Db1A7oTZ7p7//++B24gS8+y4cPjzwW1tb+j7efTd6sT0vnD0vziN5QNwsWoiUlaW3pd4finW99S0pCWruCcxs9werT2/bmJ36f2Igf89k29R9pL6p6LnFcb+vF+z+vrh39jKnWhRPPAELFuTu1w8KhiGWOjVGr8HQY9So4DaY6d/dDUeORA+W1HfrPS+UmS8SfbUPZJvM9p4XoCj/SPvzD3qg6zo709el3s9cPnas/9tlWzeSQ7mQ9LxByPXJM9ubiPLyILjLyk4tl5cH091ktp/Jcq718+YN+tOiYBhi9VX1GMYre15h0YWZU0zlQUnJqVNFMnykBmNPUPR8iks95ZbtdN9g9Oltm55PDjCwv2eybc/f1DcTUV/Ie7uvU4pZKRiG2JhRYzh/4vl9T40hksns1DvDioq4q5Eio8tV8yDnlUkiIgVEwZAHyeokLftaOHJyWM/wISJFQsGQB8lEkm7vZkv7lrhLERHJScGQBzl/tEdEpIAoGPKgdkItY8rHKBhEZFhQMORBiZUwp3qOgkFEhgUFQ570XJk0jH93SESKhIIhT5KJJB1HO/jN4d/EXYqISJ8UDHmiAWgRGS4UDHnSUH3qR3tERAqZgiFPJpw1gelnT9fUGCJS8BQMedSQaNAnBhEpeAqGPEpWJ9navpWTXSfjLkVEpFeRgsHMFprZdjNrMbOlWdZXmNlj4fq1ZlaTsu6OsH27mS1IaV9uZm1m1pyxr4lm9jMz2xH+HdyfJopRMpHkZPdJtndsj7sUEZFe5QwGMysFHgCuAeqAJWZWl9HtRmC/u88EvgPcG25bBywG6oGFwIPh/gC+H7ZlWgr8wt1nAb8I748IujJJRIaDKJ8Y5gMt7v6au58AVgCZvzizCHg4XH4cuMrMLGxf4e7H3X0n0BLuD3d/FtiX5fFS9/Uw8Mnoh1PYLph0AaNKRykYRKSgRQmGqcCulPutYVvWPu7eCRwEJkXcNlPC3d8Ol38DJCLUOCyUl5ZTV1WnYBCRglbQg88ezB+RdQ4JM7vJzNab2fr29vY8VzZwDdW6MklECluUYNgNTE+5Py1sy9rHzMqA8UBHxG0z7TGzc8N9nQu0Zevk7svcvdHdG6uqqiIcRmFIJpLsPrSbjiMdcZciIpJVlGBYB8wys1ozG0UwmLwqo88q4IZw+Trg6fDd/ipgcXjVUi0wC3gxx+Ol7usG4N8i1Dhs9AxAb2rbFHMlIiLZ5QyGcMzgFuBJYCuw0t03m9ldZnZt2O0hYJKZtQBfJrySyN03AyuBLcATwM3u3gVgZo8Ca4DZZtZqZjeG+7oHuNrMdgC/G94fMd4Lhj0KBhEpTGVROrn7amB1RtudKcvHgE/3su3dwN1Z2pf00r8DuCpKXcNRYkyCqtFVGmcQkYJV0IPPI5GZBb/NoDmTRKRAKRhi0FDdQHNbM13dXXGXIiJyGgVDDJKJJEdOHuG1/a/FXYqIyGkUDDHQ1BgiUsgUDDGoq6qjxEp0yaqIFCQFQwzOKj+LCyZdoE8MIlKQFAwxSSaSCgYRKUgKhpgkq5O8uv9VDp84HHcpIiJpFAwxaUg0ANDc1pyjp4hIfikYYqIrk0SkUCkYYvL+8e9n3KhxmjNJRAqOgiEmmhpDRAqVgiFGPVcmBTOUi4gUBgVDjJKJJAeOHaD1nda4SxEReY+CIUYN1cGVSRqAFpFComCI0ZzqOYCCQUQKi4IhRuMrx1NzTo3mTBKRgqJgiJmmxhCRQqNgiFmyOsm2vds43nk87lJERAAFQ+ySiSRd3sXWvVvjLkVEBIgYDGa20My2m1mLmS3Nsr7CzB4L1681s5qUdXeE7dvNbEGufZrZVWa2wcw2mtl/mdnMMzzGgtYzZ5JOJ4lIoSjL1cHMSoEHgKuBVmCdma1y9y0p3W4E9rv7TDNbDNwL/L6Z1QGLgXpgCvBzM7sg3Ka3fX4PWOTuW83sz4CvA380CMdakGZOnEllWSXPvfkcv/3+36bESiLfSq007b6ZDWmt3d5NZ3cnJ7tOcrL75HvLnd2dfd6P0jdzHRAcE4aZYdh7x9jTlrq+P30z1/fWN+25LinN+rxnax/sviL5ljMYgPlAi7u/BmBmK4BFQGowLAK+GS4/DnzXglepRcAKdz8O7DSzlnB/9LFPB84O+4wH3hrYoQ0PZSVlJBNJlm1YxrINy854f/0Jlmy3ru6uXl/Iu717EI5Y+itKmPS0ZQuXvtoGY18l9D88+xO4udblesPUZ98c++rvPnveWJzWHr7pGC6iBMNUYFfK/VbgA731cfdOMzsITArbX8jYdmq43Ns+/wew2syOAu8Al0eocVj7l0/+Cy+0vkC3d8d3o5uu7i5KS0opLymnrKSM8pJyyktPLZeVlGW939e6geynrCT439Jxur0bd8dx3MP74XLm+v70zVyfrW9P/y7veu9+V3fKcpb2XH1zbZ+t74D6RdhHZp/O7s4+6+yt9v4eV7G+wcj8FNpbiPQWLL2t+4dP/AMffP8HB7XWKMGQb18CPubua83sduA+grBIY2Y3ATcBzJgxI78VDrLZk2cze/LsuMsQyZv+Bm5vgZR5y+zfa78c+8m1vy7veu8NRbZb6puLXLe+9pP6xq23vuMqxg36f58owbAbmJ5yf1rYlq1Pq5mVEZwC6six7WntZlYFXOzua8P2x4AnshXl7suAZQCNjY2ahU5kGDEzyqwQ35cKRLsqaR0wy8xqzWwUwWDyqow+q4AbwuXrgKc9mDJ0FbA4vGqpFpgFvNjHPvcD41MGqK8GdB2niEge5YzscMzgFuBJoBRY7u6bzewuYL27rwIeAn4QDi7vI3ihJ+y3kmBQuRO42d27ALLtM2z/PPBjM+smCIo/HtQjFhGRPtlI+C2AxsZGX79+fdxliIgMK2b2krs3ZrbrImkREUmjYBARkTQKBhERSaNgEBGRNAoGERFJMyKuSjKzduCNAW4+Gdg7iOUMd3o+TtFzkU7PR7qR8Hy8392rMhtHRDCcCTNbn+1yrWKl5+MUPRfp9HykG8nPh04liYhIGgWDiIikUTCEE/HJe/R8nKLnIp2ej3Qj9vko+jEGERFJp08MIiKSpqiDwcwWmtl2M2sxs6Vx1xMXM5tuZs+Y2RYz22xmX4y7pkJgZqVm9isz+/e4a4mbmZ1jZo+b2TYz22pmV8RdU1zM7Evhv5NmM3vUzCrjrmmwFW0wmFkp8ABwDVAHLDGzunirik0n8BfuXkfwU6o3F/FzkeqL6PdAevwt8IS7XwhcTJE+L2Y2FfhzoNHd5xD8bMDieKsafEUbDMB8oMXdX3P3E8AKYFHMNcXC3d929w3h8iGCf/RT+95qZDOzacDHgX+Ku5a4mdl44LcJfncFdz/h7gdiLSpeZcBZ4a9VjgbeirmeQVfMwTAV2JVyv5UifzEEMLMaYB6wNkfXke5+4KtAcf5yfbpaoB345/DU2j+Z2Zi4i4qDu+8Gvg28CbwNHHT3p+KtavAVczBIBjMbC/wYuM3d34m7nriY2SeANnd/Ke5aCkQZcAnwPXefB7wLFOWYnJlNIDizUAtMAcaY2fXxVjX4ijkYdgPTU+5PC9uKkpmVE4TCI+7+k7jriVkTcK2ZvU5wivEjZvbDeEuKVSvQ6u49nyIfJwiKYvS7wE53b3f3k8BPgCtjrmnQFXMwrANmmVmtmY0iGEBaFXNNsTAzIzh/vNXd74u7nri5+x3uPs3dawj+v3ja3Ufcu8Ko3P03wC4zmx02XUXwO+7F6E3gcjMbHf67uYoROBBfFncBcXH3TjO7BXiS4MqC5e6+Oeay4tIEfA7YZGYbw7a/dPfV8ZUkBeZW4JHwTdRrwH+PuZ5YuPtaM3sc2EBwNd+vGIHfgNY3n0VEJE0xn0oSEZEsFAwiIpJGwSAiImkUDCIikkbBICIiaRQMIiKSRsEgIiJpFAwiIpLm/wOXJojl1CdeHwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"sequential\"\n",
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "lstm (LSTM)                  (None, 50)                11800     \n",
      "_________________________________________________________________\n",
      "dense (Dense)                (None, 1)                 51        \n",
      "=================================================================\n",
      "Total params: 11,851\n",
      "Trainable params: 11,851\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n",
      "None\n"
     ]
    }
   ],
   "source": [
    "# 绘制训练损失和测试损失\n",
    "line1 = result.history['loss']\n",
    "line2 = result.history['val_loss']\n",
    "plt.plot(line1, label='train', c='g')\n",
    "plt.plot(line2, label='test', c='r')\n",
    "plt.legend(loc='best')\n",
    "plt.show()\n",
    "print(model.summary())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\anaconda\\envs\\work\\lib\\site-packages\\numpy\\core\\_asarray.py:136: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray\n",
      "  return array(a, dtype, copy=False, order=order, subok=True)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 呈现原始数据，训练结果，预测结果\n",
    "def plot_img(source_data_set, train_predict, test_predict):\n",
    "    # 原始数据蓝色\n",
    "    plt.plot(source_data_set[:, -1], label='real', c='b')\n",
    "    # 训练数据绿色\n",
    "    plt.plot([x for x in train_predict], label='train predict', c='g')\n",
    "    # 预测结果红色\n",
    "    plt.plot([None for _ in train_predict] + [x for x in test_predict], label='test predict', c='r')\n",
    "    plt.legend()\n",
    "    plt.show()\n",
    "\n",
    "# 绘制预测结果与实际结果对比\n",
    "plot_img(values, train_predict, test_predict)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "work",
   "language": "python",
   "name": "work"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.6"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": false,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {
    "height": "calc(100% - 180px)",
    "left": "10px",
    "top": "150px",
    "width": "245.76px"
   },
   "toc_section_display": true,
   "toc_window_display": true
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
